diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2021-02-10 22:28:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-10 22:28:52 +0100 |
commit | 61aea004d7101e138794a337c03ef00a6b3994e6 (patch) | |
tree | ed6e5bab2647e1580490d5c4ada4560dbde7eedd /runtime/lua/vim/treesitter/languagetree.lua | |
parent | 230f2ff381d7bced4d1e19bd1853ce75cbde797a (diff) | |
parent | 94622ca66b553018c19fbbb615f2e1fee0a8074a (diff) | |
download | rneovim-61aea004d7101e138794a337c03ef00a6b3994e6.tar.gz rneovim-61aea004d7101e138794a337c03ef00a6b3994e6.tar.bz2 rneovim-61aea004d7101e138794a337c03ef00a6b3994e6.zip |
Merge pull request #13895 from bfredl/ar2
buffer updates: fix autoread but for real this time
Diffstat (limited to 'runtime/lua/vim/treesitter/languagetree.lua')
-rw-r--r-- | runtime/lua/vim/treesitter/languagetree.lua | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/runtime/lua/vim/treesitter/languagetree.lua b/runtime/lua/vim/treesitter/languagetree.lua index 6d47ed8365..28a87f26c7 100644 --- a/runtime/lua/vim/treesitter/languagetree.lua +++ b/runtime/lua/vim/treesitter/languagetree.lua @@ -35,6 +35,7 @@ function LanguageTree.new(source, lang, opts) _callbacks = { changedtree = {}, bytes = {}, + detach = {}, child_added = {}, child_removed = {} }, @@ -45,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 @@ -397,6 +403,16 @@ 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(true) + self:_do_callback('detach', ...) +end + --- Registers callbacks for the parser -- @param cbs An `nvim_buf_attach`-like table argument with the following keys : -- `on_bytes` : see `nvim_buf_attach`, but this will be called _after_ the parsers callback. @@ -416,6 +432,10 @@ function LanguageTree:register_cbs(cbs) table.insert(self._callbacks.bytes, cbs.on_bytes) end + if cbs.on_detach then + table.insert(self._callbacks.detach, cbs.on_detach) + end + if cbs.on_child_added then table.insert(self._callbacks.child_added, cbs.on_child_added) end |