mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-03 03:56:52 -04:00
fix(languagetree): avoid language self-injection
This avoids some stack overflows when a language includes itself. This is a temporary solution, and will be addressed later when actually managing our own parsers.
This commit is contained in:
parent
6d352a0efc
commit
e9129eee49
1 changed files with 14 additions and 7 deletions
|
|
@ -116,15 +116,22 @@ function LanguageTree:update()
|
|||
local seen = {}
|
||||
|
||||
-- Update each child accordingly
|
||||
-- TODO(vigoux): for now avoid languages that include themselves, will
|
||||
-- be fixed when managing our own parsers
|
||||
for lang, ranges in pairs(injections) do
|
||||
if not self.children[lang] then
|
||||
self.children[lang] = LanguageTree.new(self.parser.bufnr, lang, true)
|
||||
end
|
||||
|
||||
if self.children[lang] then
|
||||
self.children[lang].parser:set_included_ranges(ranges)
|
||||
self.children[lang]:update()
|
||||
seen[lang] = true
|
||||
if lang ~= self.parser.lang then
|
||||
|
||||
if not self.children[lang] then
|
||||
vim.api.nvim_err_writeln("Creating node for language " .. lang)
|
||||
self.children[lang] = LanguageTree.new(self.parser.bufnr, lang, true)
|
||||
end
|
||||
|
||||
if self.children[lang] then
|
||||
self.children[lang].parser:set_included_ranges(ranges)
|
||||
self.children[lang]:update()
|
||||
seen[lang] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue