vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 vim.opt.termguicolors = true local M = { "nvim-tree/nvim-tree.lua" } M.tag = "nvim-tree-v1.9.0" M.keys = { { "nt", ":NvimTreeToggle", desc = "toggle nvim tree" } } M.dependencies = { -- https://github.com/nvim-tree/nvim-web-devicons "nvim-tree/nvim-web-devicons", opts = {} } function M.config() require("nvim-tree").setup() vim.api.nvim_create_autocmd("WinClosed", { nested = true, callback = function() M.handle_closed(tonumber(vim.fn.expand(""))) end, }) end function M.handle_closed(window) local tab = vim.api.nvim_win_get_tabpage(window) local buffer = vim.api.nvim_win_get_buf(window) local info = vim.fn.getbufinfo(buffer)[1] local function filter_window(w) return w ~= window end local windows = vim.tbl_filter(filter_window, vim.api.nvim_tabpage_list_wins(tab)) local buffers = vim.tbl_map(vim.api.nvim_win_get_buf, windows) if info.name:match(".*NvimTree_%d*$") then if not vim.tbl_isempty(buffers) then require("nvim-tree.api").tree.close() end return end if #buffers ~= 1 then return end local last_info = vim.fn.getbufinfo(buffers[1])[1] if last_info.name:match(".*NvimTree_%d*$") then vim.schedule(function() if #vim.api.nvim_list_wins() == 1 then vim.cmd "quit" else vim.api.nvim_win_close(windows[1], true) end end) end end return M