diff options
author | Riley Bruins <ribru17@hotmail.com> | 2025-02-10 18:31:40 -0800 |
---|---|---|
committer | Lewis Russell <me@lewisr.dev> | 2025-02-11 09:17:08 +0000 |
commit | 3abfaafad255079f39a0843fb1b601db00d739af (patch) | |
tree | 4371c4222d389b422f3f625ac7c29b822d91bb54 /runtime/lua/vim/treesitter/languagetree.lua | |
parent | f8cbdbb4a817c9e85386c50ddf31460e49038c21 (diff) | |
download | rneovim-3abfaafad255079f39a0843fb1b601db00d739af.tar.gz rneovim-3abfaafad255079f39a0843fb1b601db00d739af.tar.bz2 rneovim-3abfaafad255079f39a0843fb1b601db00d739af.zip |
fix(treesitter): detect trees with outdated regions in `is_valid()`
Diffstat (limited to 'runtime/lua/vim/treesitter/languagetree.lua')
-rw-r--r-- | runtime/lua/vim/treesitter/languagetree.lua | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/runtime/lua/vim/treesitter/languagetree.lua b/runtime/lua/vim/treesitter/languagetree.lua index ea745c4deb..d8db489d54 100644 --- a/runtime/lua/vim/treesitter/languagetree.lua +++ b/runtime/lua/vim/treesitter/languagetree.lua @@ -318,7 +318,13 @@ function LanguageTree:is_valid(exclude_children, range) end -- TODO: Efficiently search for possibly intersecting regions using a binary search for i, region in pairs(self:included_regions()) do - if not valid_regions[i] and intercepts_region(region, range) then + if + not valid_regions[i] + and ( + intercepts_region(region, range) + or (self._trees[i] and intercepts_region(self._trees[i]:included_ranges(false), range)) + ) + then return false end end |