From 42b23246bca67014f4289251725fce479b48f099 Mon Sep 17 00:00:00 2001 From: kiyan Date: Mon, 19 Jul 2021 22:26:08 +0200 Subject: [PATCH] fix: do not redraw git on each folder when updating --- lua/nvim-tree/git.lua | 6 ++++-- lua/nvim-tree/lib.lua | 3 ++- lua/nvim-tree/populate.lua | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lua/nvim-tree/git.lua b/lua/nvim-tree/git.lua index ebf86040..95642779 100644 --- a/lua/nvim-tree/git.lua +++ b/lua/nvim-tree/git.lua @@ -103,7 +103,7 @@ function M.git_root(path) return git_root end -function M.update_status(entries, cwd, parent_node) +function M.update_status(entries, cwd, parent_node, with_redraw) local git_root, git_status = get_git_root(cwd) if not git_root then if not create_root(cwd) then @@ -148,7 +148,9 @@ function M.update_status(entries, cwd, parent_node) end end end - require'nvim-tree.lib'.redraw() + if with_redraw then + require'nvim-tree.lib'.redraw() + end end ---Check if the given path is ignored by git. diff --git a/lua/nvim-tree/lib.lua b/lua/nvim-tree/lib.lua index d3b9a0dc..f383e4c6 100644 --- a/lua/nvim-tree/lib.lua +++ b/lua/nvim-tree/lib.lua @@ -147,7 +147,7 @@ end local function refresh_git(node) if not node then node = M.Tree end - git.update_status(node.entries, node.absolute_path or node.cwd, node) + git.update_status(node.entries, node.absolute_path or node.cwd, node, false) for _, entry in pairs(node.entries) do if entry.entries and #entry.entries > 0 then refresh_git(entry) @@ -175,6 +175,7 @@ function M.refresh_tree() vim.schedule(function() git.reload_roots() refresh_git(M.Tree) + M.redraw() end) end diff --git a/lua/nvim-tree/populate.lua b/lua/nvim-tree/populate.lua index 21f96e9f..8126c8ba 100644 --- a/lua/nvim-tree/populate.lua +++ b/lua/nvim-tree/populate.lua @@ -355,7 +355,7 @@ function M.populate(entries, cwd, parent_node) end if config.use_git() then - vim.schedule(function() git.update_status(entries, cwd, parent_node) end) + vim.schedule(function() git.update_status(entries, cwd, parent_node, true) end) end end