From 59598723077ac6728fc585c3c88e0ec84ba430c3 Mon Sep 17 00:00:00 2001 From: Ahmed Khalf Date: Fri, 20 Aug 2021 11:31:18 +0400 Subject: [Refactor]: consistent update of bufferline offset with nvim-tree (#1351) * Refactor nvim-tree * Fix stylua comments * Delete useless functions * Remove autocmd and fix tasty's bug * Fix luacheck * Fix icon issue * Fix formatting * Fix formatting again * Resolve Tasty's request * Replace double dashes with blank line --- lua/core/nvimtree.lua | 78 ++++++++++++++++++-------------------------------- lua/core/which-key.lua | 1 - 2 files changed, 28 insertions(+), 51 deletions(-) (limited to 'lua/core') diff --git a/lua/core/nvimtree.lua b/lua/core/nvimtree.lua index 737f248e..ff52029d 100644 --- a/lua/core/nvimtree.lua +++ b/lua/core/nvimtree.lua @@ -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", "", "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()" }, } 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"] = { "NvimTreeToggle", "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 "") + 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 diff --git a/lua/core/which-key.lua b/lua/core/which-key.lua index ff53142c..5b249430 100644 --- a/lua/core/which-key.lua +++ b/lua/core/which-key.lua @@ -66,7 +66,6 @@ M.config = function() ["q"] = { "q!", "Quit" }, ["/"] = { "CommentToggle", "Comment" }, ["c"] = { "BufferClose!", "Close Buffer" }, - ["e"] = { "lua require'core.nvimtree'.toggle_tree()", "Explorer" }, ["f"] = { "Telescope find_files", "Find File" }, ["h"] = { "nohlsearch", "No Highlight" }, b = { -- cgit v1.2.3