*nvim-treesitter* Minimum version of neovim: nightly Authors: Yazdani Kiyan , Vigouroux Thomas ============================================================================== INTRODUCTION *nvim-treesitter-intro* nvim-treesitter wraps the neovim treesitter api to provide functionnalities such as highlighting and incremental selection, and a command to easily install parsers. ============================================================================== QUICK START *nvim-treesitter-quickstart* Install the parser for your language > :TSInstall {language} < To get a list of supported languages > :TSInstallInfo < By default, everything is disabled. To enable support for features, in your `init.vim`: > lua < local ts_node_api = require 'nvim-treesitter'.get_node_api() < Methods get_node_text(node, bufnr) *ts_api.get_node_text* return the text content of a node is_parent(dest, source) *ts_api.is_parent* determines wether `dest` is a parent of `source` return a boolean get_named_children(node) *ts_api.get_named_children* return a table of named children of `node` get_next_node(node, allow_switch_parent, allow_next_parent) *ts_api.get_next_node* return the next node within the same parent. if no node is found, returns `nil`. if `allow_switch_parent` is true, it will allow switching parent when the node is the last node if `allow_next_parent` is true, it will allow next parent if the node is the last node and the next parent doesn't have children. get_previous_node(node, allow_switch_parents, allow_prev_parent) *ts_api.get_previous_node* return the previous node within the same parent. `allow_switch_parent` and `allow_prev_parent` follow the same rule as |ts_api.get_next_node| but if the node is the first node. containing_scope(node) *ts_api.containing_scope* return the smallest scope containing the node parent_scope(node, cursor_pos) *ts_api.parent_scope* return the parent scope of the current scope that contains the node. `cursor_pos` should be `{ row = number, col = number }` you can retrieve the cursor_pos with the buffer state nested_scope(node, cursor_pos) *ts_api.nested_scope* return the first scope within current scope that contains the node. `cursor_pos` should be `{ row = number, col = number }` you can retrieve the cursor_pos with the buffer state next_scope(node) *ts_api.next_scope* return the neighbour scope of the current node previous_scope(node) *ts_api.previous_scope* return the previous neighbour scope of the current node Nvim-treesitter also provides access to the state of the current buffer: > local cur_buf_state = require'nvim-treesitter'.get_buf_state() print(vim.inspect(cur_buf_state)) --[[ { cursor_pos = { row = number, col = number }, (current cursor pos in the buffer) current_node = tsnode (smallest node the cursor is on) } ]]-- < ============================================================================== FUNCTIONS *nvim-treesitter-functions* |nvim_treesitter#statusline(size)| *nvim_treesitter#statusline()* Returns a string describing the current position in the syntax tree. This could be used as a statusline indicator. Note: The `size` argument is optionnal. When specified, the string will not be longer than `size`. |nvim_treesitter#foldexpr()| *nvim_treesitter#foldexpr()* Functions to be used to determine the fold level at a given line number. To use it: > set foldmethod=expr set foldexpr=nvim_treesitter#foldexr() < Note: This is highly experimental, and folding can break on some types of edits. If you encounter such breakage, hiting `zx` should fix folding. In any case, feel free to open an issue with the reproducing steps. vim:tw=78:ts=8:noet:ft=help:norl: