local on_attach = function(buffer) local api = require("nvim-tree.api") -- Give me the default mappings except , which I replace with . api.config.mappings.default_on_attach(buffer) vim.keymap.del("n", "", { buffer = buffer }) local map = vim.keymap.set local opts = function(desc) return { desc = "󰙅 nvim-tree: " .. desc, buffer = buffer, silent = true, } end -- stylua: ignore start map("n", "l", api.node.open.edit, opts("Open")) map("n", "", api.node.open.edit, opts("Open")) map("n", "", api.node.open.horizontal, opts("Open: Horizontal Split")) map("n", "h", api.node.navigate.parent_close, opts("Close directory")) -- stylua: ignore end end local icons = require("util.icons") return { "nvim-tree/nvim-tree.lua", dependencies = "nvim-tree/nvim-web-devicons", keys = { -- stylua: ignore start { "tt", "NvimTreeToggle", desc = icons.ui.FileTree.." [t]oggle [t]ree" }, { "tf", "NvimTreeFindFile", desc = icons.ui.FileTree.." Open [t]ree to current [f]ile " }, -- stylua: ignore end }, opts = { disable_netrw = true, -- replace netrw with nvim-tree hijack_cursor = true, -- keep the cursor on begin of the filename sync_root_with_cwd = true, -- watch for `DirChanged` and refresh the tree on_attach = on_attach, git = { ignore = false, -- don't hide files from .gitignore show_on_open_dirs = false, -- don't show indication if dir is open }, view = { adaptive_size = true, -- resize the window based on the longest line cursorline = false, -- don't enable 'cursorline' in the tree width = 35, -- a little wider than the default 30 }, filters = { dotfiles = false, -- show files starting with a . custom = { "^\\.git" }, -- don't show .git directory }, renderer = { add_trailing = true, -- add trailing / to folders highlight_git = true, -- enable highlight based on git attributes icons = { webdev_colors = false, -- highlight icons with NvimTreeFileIcon git_placement = "signcolumn", -- stylua: ignore start glyphs = { default = icons.ui.File, symlink = icons.ui.FileSymlink, modified = icons.ui.Circle, folder = { arrow_closed = icons.ui.ChevronSmallRight, arrow_open = icons.ui.ChevronSmallDown, default = icons.ui.Folder, open = icons.ui.FolderOpen, empty = icons.ui.EmptyFolder, empty_open = icons.ui.EmptyFolderOpen, symlink = icons.ui.FolderSymlink, symlink_open = icons.ui.FolderSymlink, }, git = { untracked = icons.git.file.Untracked, unstaged = icons.git.file.Unstaged, staged = icons.git.file.Staged, deleted = icons.git.file.Deleted, unmerged = icons.git.file.Unmerged, renamed = icons.git.file.Renamed, ignored = icons.git.file.Ignored, }, }, -- stylua: ignore end }, }, }, }