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
This commit is contained in:
Robert Morrison 2026-04-10 02:55:52 +01:00
parent bbe189d70b
commit cb4c134964

View File

@ -1,5 +1,7 @@
---@module "lazy.nvim"
---@type LazySpec[]
return { return {
"nvim-neo-tree/neo-tree.nvim", {"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x", branch = "v3.x",
dependencies = { dependencies = {
"nvim-lua/plenary.nvim", "nvim-lua/plenary.nvim",
@ -7,13 +9,22 @@ return {
"nvim-tree/nvim-web-devicons", "nvim-tree/nvim-web-devicons",
}, },
lazy = false, lazy = false,
opts = function ()
---@module 'neo-tree' ---@module 'neo-tree'
---@type neotree.Config ---@type neotree.Config
opts = { local opts = {
enable_git_status = true, enable_git_status = true,
enable_diagnostics = true, enable_diagnostics = true,
sort_case_insensitive = true, sort_case_insensitive = true,
open_files_do_not_replace_types = {
"terminal",
"trouble",
"qf",
"help",
},
filesystem = { filesystem = {
filtered_items = { filtered_items = {
visible = false, visible = false,
@ -21,6 +32,11 @@ return {
hide_gitignored = true, hide_gitignored = true,
hide_hidden = true, hide_hidden = true,
}, },
bind_to_cwd = true,
cwd_target = {
sidebar = "global",
window = "global",
},
follow_current_file = { enabled = true }, follow_current_file = { enabled = true },
hijack_netrw_behaviour = "open_default", hijack_netrw_behaviour = "open_default",
use_libuv_file_watcher = true, use_libuv_file_watcher = true,
@ -31,5 +47,30 @@ return {
buffers = { buffers = {
follow_current_file = { enabled = true }, 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"
}
}
}
} }