diff options
author | Jaehwang Jung <tomtomjhj@gmail.com> | 2023-08-20 14:17:45 +0900 |
---|---|---|
committer | Lewis Russell <me@lewisr.dev> | 2023-09-13 08:51:54 +0100 |
commit | 4607807f9fcb83d4e183f6f67e705ffd7f451077 (patch) | |
tree | 746fe41b720f6d1fa7b770b0347121324314986f | |
parent | 1f551e068f728ff38bd7fdcfa3a6daf362bab9da (diff) | |
download | rneovim-4607807f9fcb83d4e183f6f67e705ffd7f451077.tar.gz rneovim-4607807f9fcb83d4e183f6f67e705ffd7f451077.tar.bz2 rneovim-4607807f9fcb83d4e183f6f67e705ffd7f451077.zip |
fix(treesitter): don't update fold if tree is unchanged
Problem:
Folds are opened when the visible range changes even if there are no
modifications to the buffer, e.g, when using zM for the first time. If
the parsed tree was invalid, on_win re-parses and gets empty tree
changes, which triggers fold updates.
Solution:
Don't update folds in on_changedtree if there are no changes.
-rw-r--r-- | runtime/lua/vim/treesitter/_fold.lua | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/runtime/lua/vim/treesitter/_fold.lua b/runtime/lua/vim/treesitter/_fold.lua index d82e04a5a8..8bc08c9c2e 100644 --- a/runtime/lua/vim/treesitter/_fold.lua +++ b/runtime/lua/vim/treesitter/_fold.lua @@ -299,7 +299,9 @@ local function on_changedtree(bufnr, foldinfo, tree_changes) local srow, _, erow = Range.unpack4(change) get_folds_levels(bufnr, foldinfo, srow, erow) end - foldupdate(bufnr) + if #tree_changes > 0 then + foldupdate(bufnr) + end end) end |