nVim/lua/plugins/spec/neo-tree.lua
Robert Morrison cb4c134964 feat(neo-tree): add snacks rename support
cause renaming a file in neo-tree (where needed/possible)
to update references to that file via LSP renaming
2026-04-10 02:55:52 +01:00

77 lines
1.5 KiB
Lua

---@module "lazy.nvim"
---@type LazySpec[]
return {
{"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
"nvim-tree/nvim-web-devicons",
},
lazy = false,
opts = function ()
---@module 'neo-tree'
---@type neotree.Config
local opts = {
enable_git_status = true,
enable_diagnostics = true,
sort_case_insensitive = true,
open_files_do_not_replace_types = {
"terminal",
"trouble",
"qf",
"help",
},
filesystem = {
filtered_items = {
visible = false,
hide_dotfiles = true,
hide_gitignored = true,
hide_hidden = true,
},
bind_to_cwd = true,
cwd_target = {
sidebar = "global",
window = "global",
},
follow_current_file = { enabled = true },
hijack_netrw_behaviour = "open_default",
use_libuv_file_watcher = true,
},
window = { position = "left" },
buffers = {
follow_current_file = { enabled = true },
},
}
local function on_move(data)
Snacks.rename.on_rename_file(data.source, data.destination)
end
local events = require("neo-tree.events")
opts.event_handlers = opts.event_handlers or {}
vim.list_extend(opts.event_handlers, {
{ event = events.FILE_MOVED, handler = on_move },
{ event = events.FILE_RENAMED, handler = on_move},
})
return opts
end,
keys = {
{
"<leader>n",
function()
require("neo-tree.command").execute{toggle = true}
end,
mode = "n",
noremap = true,
silent = true,
desc = "Toggle Neotree"
}
}
}
}