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