-- lua/plugins/nvim-tree.lua return { { "nvim-tree/nvim-tree.lua", version = "*", lazy = false, dependencies = { "nvim-tree/nvim-web-devicons", opts = {} }, config = function() require("nvim-tree").setup({ disable_netrw = true, -- Disable built-in netrw (recommended) hijack_netrw = true, -- Let nvim-tree handle directory browsing view = { width = 30, -- Fixed width for the sidebar side = "left", -- Position on the left }, renderer = { group_empty = true, -- Compact folders that only contain a single folder highlight_git = true, -- Highlight git status icons = { show = { file = true, folder = true, folder_arrow = true, git = true, }, }, }, filters = { dotfiles = false, -- Show dotfiles by default git_ignored = false, -- Show git-ignored files }, actions = { open_file = { quit_on_open = true, -- Close the tree when opening a file resize_window = true, -- Resize the window to fit the tree }, }, git = { enable = true, -- Enable git integration ignore = false, }, -- Custom on_attach for keybindings on_attach = function(bufnr) local api = require("nvim-tree.api") -- Default mappings (these are built-in; see :help nvim-tree-mappings) api.config.mappings.default_on_attach(bufnr) -- Optional: Add or override custom keymaps here -- Example: vim.keymap.set("n", "", api.tree.toggle, { buffer = bufnr, desc = "Toggle Nvim-Tree" }) end, }) -- Optional: Auto-open nvim-tree on startup if no file is specified vim.api.nvim_create_autocmd("VimEnter", { callback = function() if vim.fn.argc() == 0 and vim.fn.getcwd() ~= vim.fn.stdpath("config") then require("nvim-tree.api").tree.open() end end, }) -- Optional: Global keybinding to toggle the tree from anywhere vim.keymap.set("n", "e", "NvimTreeToggle", { desc = "Toggle File Explorer" }) end, }, }