From 6e0e70b1caf42a19adf27dbf3b0bda34c4636dc3 Mon Sep 17 00:00:00 2001 From: Michael <42828375+sarmong@users.noreply.github.com> Date: Sun, 10 Apr 2022 18:23:37 +0300 Subject: [PATCH] feat: delete preview buffers #1145 (#1149) --- lua/nvim-tree/actions/open-file.lua | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lua/nvim-tree/actions/open-file.lua b/lua/nvim-tree/actions/open-file.lua index 84a73e9a..dcc21a92 100644 --- a/lua/nvim-tree/actions/open-file.lua +++ b/lua/nvim-tree/actions/open-file.lua @@ -194,6 +194,15 @@ function M.fn(mode, filename) local do_split = mode == "split" or mode == "vsplit" local vertical = mode ~= "split" + -- Check if file is already loaded in a buffer + local buf_loaded = false + for _, buf_id in ipairs(api.nvim_list_bufs()) do + if api.nvim_buf_is_loaded(buf_id) and filename == api.nvim_buf_get_name(buf_id) then + buf_loaded = true + break + end + end + -- Check if filename is already open in a window local found = false for _, id in ipairs(win_ids) do @@ -245,6 +254,16 @@ function M.fn(mode, filename) end if mode == "preview" then + if not buf_loaded then + vim.bo.bufhidden = "delete" + vim.cmd [[ + augroup RemoveBufHidden + autocmd! + autocmd TextChanged setlocal bufhidden= | autocmd! RemoveBufHidden + autocmd TextChangedI setlocal bufhidden= | autocmd! RemoveBufHidden + augroup end + ]] + end view.focus() return end