64 lines
1.7 KiB
Lua
64 lines
1.7 KiB
Lua
return {
|
|
"nvim-neo-tree/neo-tree.nvim",
|
|
branch = "v3.x",
|
|
dependencies = {
|
|
"nvim-lua/plenary.nvim",
|
|
"MunifTanjim/nui.nvim",
|
|
"nvim-tree/nvim-web-devicons",
|
|
},
|
|
config = function()
|
|
require("neo-tree").setup({
|
|
window = {
|
|
mappings = {
|
|
["Y"] = function(state)
|
|
local node = state.tree:get_node()
|
|
local abs_path = node:get_id()
|
|
local rel_path = vim.fn.fnamemodify(abs_path, ":.")
|
|
vim.fn.setreg("+", rel_path)
|
|
vim.fn.setreg('"', rel_path)
|
|
vim.notify("Copied: " .. rel_path)
|
|
end,
|
|
},
|
|
},
|
|
-- Performance optimizations for large repositories
|
|
git_status_async = true,
|
|
git_status_async_options = {
|
|
batch_size = 1000, -- Process git status in batches
|
|
batch_delay = 10, -- 10ms delay between batches
|
|
max_lines = 10000, -- Limit git status lines processed
|
|
},
|
|
filesystem = {
|
|
use_libuv_file_watcher = true, -- Enable OS-level file watching for automatic git status updates
|
|
async_directory_scan = "always", -- Always scan directories asynchronously for better performance
|
|
scan_mode = "shallow", -- Don't scan deeply into directories (faster)
|
|
filtered_items = {
|
|
visible = true,
|
|
hide_dotfiles = false,
|
|
hide_hidden = false,
|
|
-- Hide common heavy directories to improve performance
|
|
hide_by_name = {
|
|
"node_modules",
|
|
".git",
|
|
".venv",
|
|
"venv",
|
|
"__pycache__",
|
|
".pytest_cache",
|
|
".mypy_cache",
|
|
".ruff_cache",
|
|
".hypothesis",
|
|
"target",
|
|
"dist",
|
|
"build",
|
|
},
|
|
hide_by_pattern = {
|
|
"*.pyc",
|
|
"*.pyo",
|
|
"*.egg-info",
|
|
},
|
|
},
|
|
},
|
|
})
|
|
vim.keymap.set("n", "<C-n>", ":Neotree filesystem reveal left<CR>", {})
|
|
end,
|
|
}
|