From 94622ca66b553018c19fbbb615f2e1fee0a8074a Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Sun, 7 Feb 2021 07:32:19 +0100 Subject: buffer updates: add on_reload callback and handle it in treesitter parser --- runtime/lua/vim/treesitter/languagetree.lua | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'runtime/lua/vim/treesitter/languagetree.lua') diff --git a/runtime/lua/vim/treesitter/languagetree.lua b/runtime/lua/vim/treesitter/languagetree.lua index a374974dca..28a87f26c7 100644 --- a/runtime/lua/vim/treesitter/languagetree.lua +++ b/runtime/lua/vim/treesitter/languagetree.lua @@ -46,11 +46,16 @@ function LanguageTree.new(source, lang, opts) end -- Invalidates this parser and all its children -function LanguageTree:invalidate() +function LanguageTree:invalidate(reload) self._valid = false + -- buffer was reloaded, reparse all trees + if reload then + self._trees = {} + end + for _, child in ipairs(self._children) do - child:invalidate() + child:invalidate(reload) end end @@ -398,8 +403,13 @@ function LanguageTree:_on_bytes(bufnr, changed_tick, new_row, new_col, new_byte) end +function LanguageTree:_on_reload() + self:invalidate(true) +end + + function LanguageTree:_on_detach(...) - self:invalidate() + self:invalidate(true) self:_do_callback('detach', ...) end -- cgit