From 39ddcf0b7deadb9f7863a3af12218d440fac3113 Mon Sep 17 00:00:00 2001 From: Fabio Lenherr / DashieTM Date: Thu, 6 Apr 2023 00:07:43 +0200 Subject: [PATCH] feat: make nvimtree lazy --- nvim/lua/config/autocmds.lua | 42 +++++++++++++++++++++++++++++++++++ nvim/lua/plugins/nvimtree.lua | 2 +- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/nvim/lua/config/autocmds.lua b/nvim/lua/config/autocmds.lua index 9093a0c..b8e9cc3 100644 --- a/nvim/lua/config/autocmds.lua +++ b/nvim/lua/config/autocmds.lua @@ -10,3 +10,45 @@ -- vim.cmd("set norelativenumber") -- end, -- }) + +-- nvim-tree is also there in modified buffers so this function filter it out +local modifiedBufs = function(bufs) + local t = 0 + for k, v in pairs(bufs) do + if v.name:match("NvimTree_") == nil then + t = t + 1 + end + end + return t +end + +vim.api.nvim_create_autocmd("BufEnter", { + nested = true, + callback = function() + if #vim.api.nvim_list_wins() == 1 and + vim.api.nvim_buf_get_name(0):match("NvimTree_") ~= nil and + modifiedBufs(vim.fn.getbufinfo({ bufmodified = 1 })) == 0 then + vim.cmd "quit" + end + end +}) + +local function open_nvim_tree(data) + + -- buffer is a directory + local directory = vim.fn.isdirectory(data.file) == 1 + + if not directory then + return + end + + -- change to the directory + if directory then + vim.cmd.cd(data.file) + end + + -- open the tree + require("nvim-tree.api").tree.open() +end + +vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree }) diff --git a/nvim/lua/plugins/nvimtree.lua b/nvim/lua/plugins/nvimtree.lua index 85c1da4..e1134bb 100644 --- a/nvim/lua/plugins/nvimtree.lua +++ b/nvim/lua/plugins/nvimtree.lua @@ -1,6 +1,7 @@ return { { "nvim-tree/nvim-tree.lua", + lazy = true, opts = { on_attach = function(bufnr) local api = require("nvim-tree.api") @@ -61,7 +62,6 @@ return { vim.keymap.set("n", "<2-RightMouse>", api.tree.change_root_to_node, opts("CD")) end, respect_buf_cwd = true, - open_on_setup = true, view = { centralize_selection = false, side = "right",