From 16d1b194376bf1fc2acd89ccb3c29ba8315bfcea Mon Sep 17 00:00:00 2001 From: takuto Date: Fri, 22 Mar 2024 08:32:36 +0900 Subject: [PATCH] fix(renderer): check if current buffer is loaded (#1406) Co-authored-by: cseickel --- lua/neo-tree/ui/renderer.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lua/neo-tree/ui/renderer.lua b/lua/neo-tree/ui/renderer.lua index 386b8b63..e6c54cdf 100644 --- a/lua/neo-tree/ui/renderer.lua +++ b/lua/neo-tree/ui/renderer.lua @@ -163,15 +163,14 @@ M.close = function(state, focus_prior_window) end state.winid = nil end - local bufnr = utils.get_value(state, "bufnr", 0, true) - if bufnr > 0 and vim.api.nvim_buf_is_valid(bufnr) then + if window_existed then + local bufnr = utils.get_value(state, "bufnr", 0, true) state.bufnr = nil - local success, err = pcall(vim.api.nvim_buf_delete, bufnr, { force = true }) - if not success and err:match("E523") then - vim.schedule_wrap(function() + 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 + end) end return window_existed end @@ -781,6 +780,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, @@ -1090,7 +1090,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)