|  | @@ -1,6 +1,6 @@
 | 
	
		
			
				|  |  |  local M = {}
 | 
	
		
			
				|  |  |  local Log = require "core.log"
 | 
	
		
			
				|  |  | ---
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  M.config = function()
 | 
	
		
			
				|  |  |    lvim.builtin.nvimtree = {
 | 
	
		
			
				|  |  |      active = true,
 | 
	
	
		
			
				|  | @@ -47,7 +47,7 @@ M.config = function()
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  | ---
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  M.setup = function()
 | 
	
		
			
				|  |  |    local status_ok, nvim_tree_config = pcall(require, "nvim-tree.config")
 | 
	
		
			
				|  |  |    if not status_ok then
 | 
	
	
		
			
				|  | @@ -73,64 +73,42 @@ M.setup = function()
 | 
	
		
			
				|  |  |        { key = { "l", "<CR>", "o" }, cb = tree_cb "edit" },
 | 
	
		
			
				|  |  |        { key = "h", cb = tree_cb "close_node" },
 | 
	
		
			
				|  |  |        { key = "v", cb = tree_cb "vsplit" },
 | 
	
		
			
				|  |  | -      { key = "q", cb = ":lua require('core.nvimtree').toggle_tree()<cr>" },
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  | -end
 | 
	
		
			
				|  |  | ---
 | 
	
		
			
				|  |  | -M.focus_or_close = function()
 | 
	
		
			
				|  |  | -  local view_status_ok, view = pcall(require, "nvim-tree.view")
 | 
	
		
			
				|  |  | -  if not view_status_ok then
 | 
	
		
			
				|  |  | -    return
 | 
	
		
			
				|  |  | -  end
 | 
	
		
			
				|  |  | -  local a = vim.api
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  local curwin = a.nvim_get_current_win()
 | 
	
		
			
				|  |  | -  local curbuf = a.nvim_win_get_buf(curwin)
 | 
	
		
			
				|  |  | -  local bufnr = view.View.bufnr
 | 
	
		
			
				|  |  | -  local winnr = view.get_winnr()
 | 
	
		
			
				|  |  | +  lvim.builtin.which_key.mappings["e"] = { "<cmd>NvimTreeToggle<CR>", "Explorer" }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  local tree_view = require "nvim-tree.view"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if view.win_open() then
 | 
	
		
			
				|  |  | -    if curwin == winnr and curbuf == bufnr then
 | 
	
		
			
				|  |  | -      view.close()
 | 
	
		
			
				|  |  | -      if package.loaded["bufferline.state"] then
 | 
	
		
			
				|  |  | -        require("bufferline.state").set_offset(0)
 | 
	
		
			
				|  |  | -      end
 | 
	
		
			
				|  |  | -    else
 | 
	
		
			
				|  |  | -      view.focus()
 | 
	
		
			
				|  |  | -    end
 | 
	
		
			
				|  |  | -  else
 | 
	
		
			
				|  |  | -    view.open()
 | 
	
		
			
				|  |  | -    if package.loaded["bufferline.state"] and lvim.builtin.nvimtree.side == "left" then
 | 
	
		
			
				|  |  | -      -- require'bufferline.state'.set_offset(lvim.builtin.nvimtree.width + 1, 'File Explorer')
 | 
	
		
			
				|  |  | -      require("bufferline.state").set_offset(lvim.builtin.nvimtree.width + 1, "")
 | 
	
		
			
				|  |  | -    end
 | 
	
		
			
				|  |  | +  -- Add nvim_tree open callback
 | 
	
		
			
				|  |  | +  local open = tree_view.open
 | 
	
		
			
				|  |  | +  tree_view.open = function()
 | 
	
		
			
				|  |  | +    M.on_open()
 | 
	
		
			
				|  |  | +    open()
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  vim.cmd "au WinClosed * lua require('core.nvimtree').on_close()"
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  | ---
 | 
	
		
			
				|  |  | -M.toggle_tree = function()
 | 
	
		
			
				|  |  | -  local view_status_ok, view = pcall(require, "nvim-tree.view")
 | 
	
		
			
				|  |  | -  if not view_status_ok then
 | 
	
		
			
				|  |  | -    return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +M.on_open = function()
 | 
	
		
			
				|  |  | +  if package.loaded["bufferline.state"] and lvim.builtin.nvimtree.side == "left" then
 | 
	
		
			
				|  |  | +    require("bufferline.state").set_offset(lvim.builtin.nvimtree.width + 1, "")
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  | -  if view.win_open() then
 | 
	
		
			
				|  |  | -    require("nvim-tree").close()
 | 
	
		
			
				|  |  | -    if package.loaded["bufferline.state"] then
 | 
	
		
			
				|  |  | -      require("bufferline.state").set_offset(0)
 | 
	
		
			
				|  |  | -    end
 | 
	
		
			
				|  |  | -  else
 | 
	
		
			
				|  |  | -    if package.loaded["bufferline.state"] and lvim.builtin.nvimtree.side == "left" then
 | 
	
		
			
				|  |  | -      -- require'bufferline.state'.set_offset(lvim.builtin.nvimtree.width + 1, 'File Explorer')
 | 
	
		
			
				|  |  | -      require("bufferline.state").set_offset(lvim.builtin.nvimtree.width + 1, "")
 | 
	
		
			
				|  |  | -    end
 | 
	
		
			
				|  |  | -    require("nvim-tree").toggle()
 | 
	
		
			
				|  |  | +end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +M.on_close = function()
 | 
	
		
			
				|  |  | +  local buf = tonumber(vim.fn.expand "<abuf>")
 | 
	
		
			
				|  |  | +  local ft = vim.api.nvim_buf_get_option(buf, "filetype")
 | 
	
		
			
				|  |  | +  if ft == "NvimTree" and package.loaded["bufferline.state"] then
 | 
	
		
			
				|  |  | +    require("bufferline.state").set_offset(0)
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  | ---
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  function M.change_tree_dir(dir)
 | 
	
		
			
				|  |  | -  if vim.g.loaded_tree then
 | 
	
		
			
				|  |  | -    require("nvim-tree.lib").change_dir(dir)
 | 
	
		
			
				|  |  | +  local lib_status_ok, lib = pcall(require, "nvim-tree.lib")
 | 
	
		
			
				|  |  | +  if lib_status_ok then
 | 
	
		
			
				|  |  | +    lib.change_dir(dir)
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  | ---
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  return M
 |