aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter/dev.lua
diff options
context:
space:
mode:
authoryuukibarns <yuukibarns@gmail.com>2025-03-30 23:06:16 +0800
committerLewis Russell <me@lewisr.dev>2025-04-16 15:03:28 +0100
commit284b0e4fa25c0acc12a88398112fc35aec8791ee (patch)
treea694561766ecb2de57697d4ff760a8293b076005 /runtime/lua/vim/treesitter/dev.lua
parent223ac7782e24c3d662185b5f1fc63d718c4376bc (diff)
downloadrneovim-284b0e4fa25c0acc12a88398112fc35aec8791ee.tar.gz
rneovim-284b0e4fa25c0acc12a88398112fc35aec8791ee.tar.bz2
rneovim-284b0e4fa25c0acc12a88398112fc35aec8791ee.zip
fix(treesitter): fix `:InspectTree` incorrect injections
Diffstat (limited to 'runtime/lua/vim/treesitter/dev.lua')
-rw-r--r--runtime/lua/vim/treesitter/dev.lua20
1 files changed, 13 insertions, 7 deletions
diff --git a/runtime/lua/vim/treesitter/dev.lua b/runtime/lua/vim/treesitter/dev.lua
index 41ecf07aa1..8a12bb438e 100644
--- a/runtime/lua/vim/treesitter/dev.lua
+++ b/runtime/lua/vim/treesitter/dev.lua
@@ -1,5 +1,7 @@
local api = vim.api
+local Range = require('vim.treesitter._range')
+
local M = {}
---@class (private) vim.treesitter.dev.TSTreeView
@@ -96,16 +98,20 @@ function TSTreeView:new(bufnr, lang)
parser:for_each_tree(function(parent_tree, parent_ltree)
local parent = parent_tree:root()
+ local parent_range = { parent:range() }
for _, child in pairs(parent_ltree:children()) do
for _, tree in pairs(child:trees()) do
local r = tree:root()
- local node = assert(parent:named_descendant_for_range(r:range()))
- local id = node:id()
- if not injections[id] or r:byte_length() > injections[id].root:byte_length() then
- injections[id] = {
- lang = child:lang(),
- root = r,
- }
+ local r_range = { r:range() }
+ if Range.contains(parent_range, r_range) then
+ local node = assert(parent:named_descendant_for_range(r:range()))
+ local id = node:id()
+ if not injections[id] or r:byte_length() > injections[id].root:byte_length() then
+ injections[id] = {
+ lang = child:lang(),
+ root = r,
+ }
+ end
end
end
end