From 586e42b496b41497c21e56f7b1458fd1c43382ff Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Mon, 7 Apr 2025 08:48:06 +1000 Subject: [PATCH 1/4] fix(#3101): fix bad reference to renderer.highlight_opened_files during BufUnload and BufReadPost --- lua/nvim-tree/explorer/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/nvim-tree/explorer/init.lua b/lua/nvim-tree/explorer/init.lua index f2f498b526b..2baf66f4422 100644 --- a/lua/nvim-tree/explorer/init.lua +++ b/lua/nvim-tree/explorer/init.lua @@ -101,7 +101,7 @@ function Explorer:create_autocmds() vim.api.nvim_create_autocmd("BufReadPost", { group = self.augroup_id, callback = function(data) - if (self.filters.state.no_buffer or self.opts.highlight_opened_files ~= "none") and vim.bo[data.buf].buftype == "" then + if (self.filters.state.no_buffer or self.opts.renderer.highlight_opened_files ~= "none") and vim.bo[data.buf].buftype == "" then utils.debounce("Buf:filter_buffer_" .. self.uid_explorer, self.opts.view.debounce_delay, function() self:reload_explorer() end) @@ -113,7 +113,7 @@ function Explorer:create_autocmds() vim.api.nvim_create_autocmd("BufUnload", { group = self.augroup_id, callback = function(data) - if (self.filters.state.no_buffer or self.opts.highlight_opened_files ~= "none") and vim.bo[data.buf].buftype == "" then + if (self.filters.state.no_buffer or self.opts.renderer.highlight_opened_files ~= "none") and vim.bo[data.buf].buftype == "" then utils.debounce("Buf:filter_buffer_" .. self.uid_explorer, self.opts.view.debounce_delay, function() self:reload_explorer() end) From a043248e45304f39c333ca409b2f5666cd773d96 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Mon, 7 Apr 2025 10:14:46 +1000 Subject: [PATCH 2/4] fix(#3101): only redraw renderer.highlight_opened_files during BufUnload and BufReadPost --- lua/nvim-tree/explorer/init.lua | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/lua/nvim-tree/explorer/init.lua b/lua/nvim-tree/explorer/init.lua index 2baf66f4422..4d5caeeb019 100644 --- a/lua/nvim-tree/explorer/init.lua +++ b/lua/nvim-tree/explorer/init.lua @@ -101,10 +101,19 @@ function Explorer:create_autocmds() vim.api.nvim_create_autocmd("BufReadPost", { group = self.augroup_id, callback = function(data) - if (self.filters.state.no_buffer or self.opts.renderer.highlight_opened_files ~= "none") and vim.bo[data.buf].buftype == "" then + -- only handle normal files + if vim.bo[data.buf].buftype ~= "" then + return + end + + if self.filters.state.no_buffer then + -- full reload to update the filter state utils.debounce("Buf:filter_buffer_" .. self.uid_explorer, self.opts.view.debounce_delay, function() self:reload_explorer() end) + elseif self.opts.renderer.highlight_opened_files ~= "none" then + -- draw to update opened highlight + self.renderer:draw() end end, }) @@ -113,10 +122,21 @@ function Explorer:create_autocmds() vim.api.nvim_create_autocmd("BufUnload", { group = self.augroup_id, callback = function(data) - if (self.filters.state.no_buffer or self.opts.renderer.highlight_opened_files ~= "none") and vim.bo[data.buf].buftype == "" then + -- only handle normal files + if vim.bo[data.buf].buftype ~= "" then + return + end + + if self.filters.state.no_buffer then + -- full reload to update the filter state utils.debounce("Buf:filter_buffer_" .. self.uid_explorer, self.opts.view.debounce_delay, function() self:reload_explorer() end) + elseif self.opts.renderer.highlight_opened_files ~= "none" then + -- draw to update opened highlight; must be delayed as the buffer is still loaded during BufUnload + utils.debounce("Buf:highlight_opened_files_" .. self.uid_explorer, self.opts.view.debounce_delay, function() + self.renderer:draw() + end) end end, }) From af01d64b5c6e23dfec5f3657daf280774d8c4e64 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Mon, 7 Apr 2025 10:34:39 +1000 Subject: [PATCH 3/4] fix(#3101): only redraw renderer.highlight_opened_files during BufUnload and BufReadPost --- lua/nvim-tree/explorer/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/nvim-tree/explorer/init.lua b/lua/nvim-tree/explorer/init.lua index 4d5caeeb019..ecd7b64ee7c 100644 --- a/lua/nvim-tree/explorer/init.lua +++ b/lua/nvim-tree/explorer/init.lua @@ -107,7 +107,7 @@ function Explorer:create_autocmds() end if self.filters.state.no_buffer then - -- full reload to update the filter state + -- full reload is required to update the filter state utils.debounce("Buf:filter_buffer_" .. self.uid_explorer, self.opts.view.debounce_delay, function() self:reload_explorer() end) @@ -128,7 +128,7 @@ function Explorer:create_autocmds() end if self.filters.state.no_buffer then - -- full reload to update the filter state + -- full reload is required to update the filter state utils.debounce("Buf:filter_buffer_" .. self.uid_explorer, self.opts.view.debounce_delay, function() self:reload_explorer() end) From 0227ce97edbf0e8c046af6458fb9ff5ff5c132d2 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Mon, 7 Apr 2025 10:40:02 +1000 Subject: [PATCH 4/4] fix(#3101): only redraw renderer.highlight_opened_files during BufUnload and BufReadPost --- lua/nvim-tree/explorer/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/nvim-tree/explorer/init.lua b/lua/nvim-tree/explorer/init.lua index ecd7b64ee7c..58972164afe 100644 --- a/lua/nvim-tree/explorer/init.lua +++ b/lua/nvim-tree/explorer/init.lua @@ -134,7 +134,7 @@ function Explorer:create_autocmds() end) elseif self.opts.renderer.highlight_opened_files ~= "none" then -- draw to update opened highlight; must be delayed as the buffer is still loaded during BufUnload - utils.debounce("Buf:highlight_opened_files_" .. self.uid_explorer, self.opts.view.debounce_delay, function() + vim.schedule(function() self.renderer:draw() end) end