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:
Thomas Vigouroux 2020-10-20 08:55:25 +02:00
parent 6d352a0efc
commit e9129eee49

View file

@ -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