diff --git a/runtime/doc/treesitter.txt b/runtime/doc/treesitter.txt index c65c9c22ba..9bdc6b8d24 100644 --- a/runtime/doc/treesitter.txt +++ b/runtime/doc/treesitter.txt @@ -165,6 +165,10 @@ TSNode:named_descendant_for_range({start_row}, {start_col}, {end_row}, {end_col} TSNode:equal({node}) Check if {node} refers to the same node within the same tree. + *TSNode:byte_length()* +TSNode:byte_length() + Return the number of bytes spanned by this node. + ============================================================================== TREESITTER QUERIES *treesitter-query* diff --git a/runtime/lua/vim/treesitter/_meta.lua b/runtime/lua/vim/treesitter/_meta.lua index e6dcbc7a62..80c998b555 100644 --- a/runtime/lua/vim/treesitter/_meta.lua +++ b/runtime/lua/vim/treesitter/_meta.lua @@ -1,7 +1,7 @@ ---@meta ---@class TSNode: userdata ----@field id fun(self: TSNode): integer +---@field id fun(self: TSNode): string ---@field tree fun(self: TSNode): TSTree ---@field range fun(self: TSNode, include_bytes: false?): integer, integer, integer, integer ---@field range fun(self: TSNode, include_bytes: true): integer, integer, integer, integer, integer, integer @@ -30,6 +30,7 @@ ---@field equal fun(self: TSNode, other: TSNode): boolean ---@field iter_children fun(self: TSNode): fun(): TSNode, string ---@field field fun(self: TSNode, name: string): TSNode[] +---@field byte_length fun(self: TSNode): integer local TSNode = {} ---@param query userdata diff --git a/runtime/lua/vim/treesitter/dev.lua b/runtime/lua/vim/treesitter/dev.lua index aa4331946a..d6825eb024 100644 --- a/runtime/lua/vim/treesitter/dev.lua +++ b/runtime/lua/vim/treesitter/dev.lua @@ -24,6 +24,10 @@ local TSTreeView = {} ---@field lang string Source language of this node ---@field root TSNode +---@class TSP.Injection +---@field lang string Source language of this injection +---@field root TSNode Root node of the injection + --- Traverse all child nodes starting at {node}. --- --- This is a recursive function. The {depth} parameter indicates the current recursion level. @@ -39,8 +43,8 @@ local TSTreeView = {} ---@param node TSNode Starting node to begin traversal |tsnode| ---@param depth integer Current recursion depth ---@param lang string Language of the tree currently being traversed ----@param injections table Mapping of node ids to root nodes of injected language trees (see ---- explanation above) +---@param injections table Mapping of node ids to root nodes +--- of injected language trees (see explanation above) ---@param tree TSP.Node[] Output table containing a list of tables each representing a node in the tree local function traverse(node, depth, lang, injections, tree) local injection = injections[node:id()] @@ -104,7 +108,7 @@ function TSTreeView:new(bufnr, lang) -- the primary tree that contains that root. Add a mapping from the node in the primary tree to -- the root in the child tree to the {injections} table. local root = parser:parse(true)[1]:root() - local injections = {} ---@type table + local injections = {} ---@type table parser:for_each_tree(function(parent_tree, parent_ltree) local parent = parent_tree:root()