mirror of
https://github.com/neovim/neovim.git
synced 2025-10-21 01:02:09 +00:00
feat(treesitter): show root nodes in :InspectTree (#26944)
Co-authored-by: altermo <> Co-authored-by: Jongwook Choi <wookayin@gmail.com>
This commit is contained in:
@@ -43,25 +43,26 @@ local TSTreeView = {}
|
||||
---
|
||||
---@param node TSNode Starting node to begin traversal |tsnode|
|
||||
---@param depth integer Current recursion depth
|
||||
---@param field string|nil The field of the current node
|
||||
---@param lang string Language of the tree currently being traversed
|
||||
---@param injections table<string, TSP.Injection> 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 function traverse(node, depth, field, lang, injections, tree)
|
||||
table.insert(tree, {
|
||||
node = node,
|
||||
depth = depth,
|
||||
lang = lang,
|
||||
field = field,
|
||||
})
|
||||
|
||||
local injection = injections[node:id()]
|
||||
if injection then
|
||||
traverse(injection.root, depth, injection.lang, injections, tree)
|
||||
traverse(injection.root, depth + 1, nil, injection.lang, injections, tree)
|
||||
end
|
||||
|
||||
for child, field in node:iter_children() do
|
||||
table.insert(tree, {
|
||||
node = child,
|
||||
field = field,
|
||||
depth = depth,
|
||||
lang = lang,
|
||||
})
|
||||
|
||||
traverse(child, depth + 1, lang, injections, tree)
|
||||
for child, child_field in node:iter_children() do
|
||||
traverse(child, depth + 1, child_field, lang, injections, tree)
|
||||
end
|
||||
|
||||
return tree
|
||||
@@ -106,7 +107,7 @@ function TSTreeView:new(bufnr, lang)
|
||||
end
|
||||
end)
|
||||
|
||||
local nodes = traverse(root, 0, parser:lang(), injections, {})
|
||||
local nodes = traverse(root, 0, nil, parser:lang(), injections, {})
|
||||
|
||||
local named = {} ---@type TSP.Node[]
|
||||
for _, v in ipairs(nodes) do
|
||||
|
Reference in New Issue
Block a user