/ plugins / nvim-tree / configuration.lua
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  )