aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehwang Jung <tomtomjhj@gmail.com>2023-08-20 14:17:45 +0900
committerLewis Russell <me@lewisr.dev>2023-09-13 08:51:54 +0100
commit4607807f9fcb83d4e183f6f67e705ffd7f451077 (patch)
tree746fe41b720f6d1fa7b770b0347121324314986f
parent1f551e068f728ff38bd7fdcfa3a6daf362bab9da (diff)
downloadrneovim-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.lua4
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