mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-19 20:00:07 -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,8 +116,14 @@ function LanguageTree:update()
|
||||||
local seen = {}
|
local seen = {}
|
||||||
|
|
||||||
-- Update each child accordingly
|
-- 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
|
for lang, ranges in pairs(injections) do
|
||||||
|
|
||||||
|
if lang ~= self.parser.lang then
|
||||||
|
|
||||||
if not self.children[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)
|
self.children[lang] = LanguageTree.new(self.parser.bufnr, lang, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -127,6 +133,7 @@ function LanguageTree:update()
|
||||||
seen[lang] = true
|
seen[lang] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Clean up unused parsers
|
-- Clean up unused parsers
|
||||||
for lang, _ in pairs(self.children) do
|
for lang, _ in pairs(self.children) do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue