configuration.lua
1 local ignores = { 2 "^.direnv$", 3 "^.git$", 4 "^.jj$", 5 "^.obsidian$", 6 "^.ruff_cache$", 7 "^build$", 8 "^dist$", 9 "^node_modules$", 10 "^result$", 11 "^target$", 12 } 13 14 local function on_attach(bufnr) 15 local function opts(desc) 16 return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } 17 end 18 19 local api = require("nvim-tree.api") 20 api.config.mappings.default_on_attach(bufnr) 21 22 vim.keymap.set("n", "s", api.node.open.vertical, opts("Open in a vertical split")) 23 vim.keymap.set("n", "v", api.node.open.horizontal, opts("Open in a horizontal split")) 24 end 25 26 -- setup with options 27 require("nvim-tree").setup({ 28 on_attach = on_attach, 29 sort = { 30 sorter = "case_sensitive", 31 }, 32 view = { 33 width = { 34 min = 24, 35 max = 50, 36 padding = 1, 37 }, 38 }, 39 renderer = { 40 special_files = { 41 "Cargo.toml", 42 "flake.nix", 43 "package.json", 44 "pyproject.toml", 45 }, 46 }, 47 git = { 48 enable = true, 49 }, 50 diagnostics = { 51 enable = true, 52 }, 53 modified = { 54 enable = false, 55 }, 56 filters = { 57 enable = true, 58 git_ignored = true, 59 custom = ignores, 60 }, 61 filesystem_watchers = { 62 enable = true, 63 debounce_delay = 50, 64 ignore_dirs = ignores, 65 }, 66 actions = { 67 open_file = { 68 quit_on_open = false, 69 eject = true, 70 resize_window = true, 71 relative_path = true, 72 window_picker = { 73 enable = false, 74 }, 75 }, 76 remove_file = { 77 close_window = true, 78 }, 79 }, 80 log = { 81 enable = false, 82 }, 83 }) 84 85 vim.keymap.set( 86 "n", 87 "<leader>op", 88 "<cmd>NvimTreeToggle<cr>", 89 { noremap = true, silent = true, desc = "NvimTree: Toggle file explorer" } 90 )