From c080f17b085bf6b51ece3764be448986b161a3cb Mon Sep 17 00:00:00 2001 From: Alexander Navarro Date: Thu, 27 Apr 2023 14:43:03 -0400 Subject: [PATCH] add nvim-tree --- config/nvim/lua/aleidk/IDE/lsp.lua | 8 +- config/nvim/lua/aleidk/plugins/nvim-tree.lua | 88 ++++++++++++++++++++ 2 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 config/nvim/lua/aleidk/plugins/nvim-tree.lua diff --git a/config/nvim/lua/aleidk/IDE/lsp.lua b/config/nvim/lua/aleidk/IDE/lsp.lua index 42b716f..eb0f4411 100644 --- a/config/nvim/lua/aleidk/IDE/lsp.lua +++ b/config/nvim/lua/aleidk/IDE/lsp.lua @@ -68,10 +68,10 @@ local servers = { } -- Diagnostic keymaps -vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous diagnostic message" }) -vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next diagnostic message" }) -vim.keymap.set("n", "e", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" }) -vim.keymap.set("n", "q", vim.diagnostic.setloclist, { desc = "Open diagnostics list" }) +-- vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous diagnostic message" }) +-- vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next diagnostic message" }) +-- vim.keymap.set("n", "e", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" }) +-- vim.keymap.set("n", "q", vim.diagnostic.setloclist, { desc = "Open diagnostics list" }) -- nvim-cmp supports additional completion capabilities, so broadcast that to servers local capabilities = vim.lsp.protocol.make_client_capabilities() diff --git a/config/nvim/lua/aleidk/plugins/nvim-tree.lua b/config/nvim/lua/aleidk/plugins/nvim-tree.lua new file mode 100644 index 0000000..91b003c --- /dev/null +++ b/config/nvim/lua/aleidk/plugins/nvim-tree.lua @@ -0,0 +1,88 @@ +return { + "nvim-tree/nvim-tree.lua", + -- enabled = false, + version = "*", + dependencies = { + "nvim-tree/nvim-web-devicons", + }, + lazy = false, + config = function() + local tree = require("nvim-tree") + local tree_cb = require("nvim-tree.config").nvim_tree_callback + local api = require("nvim-tree.api") + + tree.setup({ + hijack_unnamed_buffer_when_opening = true, + disable_netrw = true, + hijack_netrw = true, + hijack_cursor = true, -- cursor at the start of filename + sync_root_with_cwd = true, + respect_buf_cwd = true, + update_focused_file = { + enable = true, -- focus curren file + update_root = true, + }, + actions = { open_file = { quit_on_open = true } }, + renderer = { + full_name = true, -- show remaining name in floating text + group_empty = true, -- group empty folders + add_trailing = true, -- Trailing slash to folders + highlight_opened_files = "all", + highlight_git = true, + }, + view = { + centralize_selection = true, -- center current file on enter + width = 30, -- N° of columns or % + }, + on_attach = function(bufnr) + local function opts(desc) + return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } + end + + -- Check defaults here: https://github.com/nvim-tree/nvim-tree.lua/wiki/Migrating-To-on_attach + api.config.mappings.default_on_attach(bufnr) + + vim.keymap.set("n", "l", api.node.open.edit, opts("Open")) + vim.keymap.set("n", "o", api.node.open.edit, opts("Open")) + vim.keymap.set("n", "", api.node.open.edit, opts("Open")) + vim.keymap.set("n", "<2-LeftMouse>", api.node.open.edit, opts("Open")) + vim.keymap.set("n", "s", api.node.open.vertical, opts("Open in vsplit")) + vim.keymap.set("n", "v", api.node.open.horizontal, opts("Open in hsplit")) + vim.keymap.set("n", "t", api.node.open.tab, opts("Open in tab")) + vim.keymap.set("n", "h", api.node.navigate.parent_close, opts("Close dir")) + vim.keymap.set("n", "", api.node.navigate.parent_close, opts("Close dir")) + vim.keymap.set("n", "i", api.tree.toggle_hidden_filter, opts("Toggle Dotfiles")) + vim.keymap.set("n", "I", api.tree.toggle_gitignore_filter, opts("Toggle Git Ignore")) + end, + }) + + -- Auto open when a dir is opened + + local function open_nvim_tree(data) + -- buffer is a directory + local directory = vim.fn.isdirectory(data.file) == 1 + + if not directory then + return + end + + -- create a new, empty buffer + vim.cmd.enew() + + -- wipe the directory buffer + vim.cmd.bw(data.buf) + + -- change to the directory + vim.cmd.cd(data.file) + + -- open the tree + require("nvim-tree.api").tree.open() + end + + vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree }) + + -- bindings + vim.keymap.set("n", "e", ":NvimTreeToggle", { desc = "Toggle file tree", silent = true }) + vim.keymap.set("n", "", ":NvimTreeToggle", { desc = "Toggle file tree", silent = true }) + end, +}