diff --git a/lua/neo-tree/ui/renderer.lua b/lua/neo-tree/ui/renderer.lua index 5e9106b74..e46bc1e32 100644 --- a/lua/neo-tree/ui/renderer.lua +++ b/lua/neo-tree/ui/renderer.lua @@ -17,6 +17,22 @@ local default_popup_size = { width = 60, height = "80%" } local floating_windows = {} local draw, create_window, create_tree, render_tree +-- clean up neotree buffers created by :mksession +local cleaned_up = false +local clean_neotree_buffers = function() + if cleaned_up then + return + end + + for _, buf in ipairs(vim.api.nvim_list_bufs()) do + local bufname = vim.fn.bufname(buf) + if string.match(bufname, "neo%-tree [^ ]+ %[%d+]") then + vim.api.nvim_buf_delete(buf, { force = true }) + end + end + cleaned_up = true +end + local resize_monitor_timer = nil local start_resize_monitor = function() local interval = M.resize_timer_interval or -1 @@ -805,6 +821,7 @@ create_window = function(state) tabnr = state.tabnr, } events.fire_event(events.NEO_TREE_WINDOW_BEFORE_OPEN, event_args) + clean_neotree_buffers() if state.current_position == "float" then state.force_float = nil