aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorThomas Vigouroux <tomvig38@gmail.com>2020-10-20 08:55:25 +0200
committerThomas Vigouroux <tomvig38@gmail.com>2020-10-21 08:36:23 +0200
commite9129eee494b57dde0ba9b4b7b11576c0feba888 (patch)
tree8cfc6e668d8141c240e85bdff73e594f36b93995 /lua
parentAdd lua params (#605) (diff)
downloadnvim-treesitter-e9129eee494b57dde0ba9b4b7b11576c0feba888.tar
nvim-treesitter-e9129eee494b57dde0ba9b4b7b11576c0feba888.tar.gz
nvim-treesitter-e9129eee494b57dde0ba9b4b7b11576c0feba888.tar.bz2
nvim-treesitter-e9129eee494b57dde0ba9b4b7b11576c0feba888.tar.lz
nvim-treesitter-e9129eee494b57dde0ba9b4b7b11576c0feba888.tar.xz
nvim-treesitter-e9129eee494b57dde0ba9b4b7b11576c0feba888.tar.zst
nvim-treesitter-e9129eee494b57dde0ba9b4b7b11576c0feba888.zip
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.
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/languagetree.lua21
1 files changed, 14 insertions, 7 deletions
diff --git a/lua/nvim-treesitter/languagetree.lua b/lua/nvim-treesitter/languagetree.lua
index fe8828154..31de88f8b 100644
--- a/lua/nvim-treesitter/languagetree.lua
+++ b/lua/nvim-treesitter/languagetree.lua
@@ -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