From 19e3319ecc6d172cbbc11d4749844638b06cd604 Mon Sep 17 00:00:00 2001 From: pysan3 Date: Wed, 20 Mar 2024 12:40:55 +0900 Subject: [PATCH 1/3] fix(renderer): check if current buffer is loaded --- lua/neo-tree/ui/renderer.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/neo-tree/ui/renderer.lua b/lua/neo-tree/ui/renderer.lua index 497033b1..618270c0 100644 --- a/lua/neo-tree/ui/renderer.lua +++ b/lua/neo-tree/ui/renderer.lua @@ -1087,7 +1087,7 @@ M.window_exists = function(state) window_exists = false elseif position == "current" then window_exists = vim.api.nvim_win_is_valid(winid) - and vim.api.nvim_buf_is_valid(bufnr) + and vim.api.nvim_buf_is_loaded(bufnr) and vim.api.nvim_win_get_buf(winid) == bufnr else local isvalid = M.is_window_valid(winid) From 7e1c333fb6426019bc8b442bab347b6fdf9655eb Mon Sep 17 00:00:00 2001 From: pysan3 Date: Wed, 20 Mar 2024 21:47:48 +0900 Subject: [PATCH 2/3] fix(renderer): supply state.bufnr to tree on initialization --- lua/neo-tree/ui/renderer.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/neo-tree/ui/renderer.lua b/lua/neo-tree/ui/renderer.lua index 618270c0..9fdf4d58 100644 --- a/lua/neo-tree/ui/renderer.lua +++ b/lua/neo-tree/ui/renderer.lua @@ -778,6 +778,7 @@ create_tree = function(state) state.tree = NuiTree({ ns_id = highlights.ns_id, winid = state.winid, + bufnr = state.bufnr, get_node_id = function(node) return node.id end, From 934935a704d414b09f4cd088f085eac517db4943 Mon Sep 17 00:00:00 2001 From: pysan3 Date: Fri, 22 Mar 2024 00:31:06 +0900 Subject: [PATCH 3/3] fix(renderer): don't close buffer when toggled on --- lua/neo-tree/ui/renderer.lua | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lua/neo-tree/ui/renderer.lua b/lua/neo-tree/ui/renderer.lua index 9fdf4d58..e6c54cdf 100644 --- a/lua/neo-tree/ui/renderer.lua +++ b/lua/neo-tree/ui/renderer.lua @@ -163,13 +163,15 @@ M.close = function(state, focus_prior_window) end state.winid = nil end - local bufnr = utils.get_value(state, "bufnr", 0, true) - state.bufnr = nil - vim.schedule(function() - if bufnr > 0 and vim.api.nvim_buf_is_valid(bufnr) then - vim.api.nvim_buf_delete(bufnr, { force = true }) - end - end) + if window_existed then + local bufnr = utils.get_value(state, "bufnr", 0, true) + state.bufnr = nil + vim.schedule(function() + if bufnr > 0 and vim.api.nvim_buf_is_valid(bufnr) then + vim.api.nvim_buf_delete(bufnr, { force = true }) + end + end) + end return window_existed end