diff --git a/lua/nvim-tree/actions/fs/copy-paste.lua b/lua/nvim-tree/actions/fs/copy-paste.lua index 9e229162596..861a96b78de 100644 --- a/lua/nvim-tree/actions/fs/copy-paste.lua +++ b/lua/nvim-tree/actions/fs/copy-paste.lua @@ -187,6 +187,7 @@ local function do_cut(source, destination) return true end + events._dispatch_will_rename_node(source, destination) local success, errmsg = vim.loop.fs_rename(source, destination) if not success then log.line("copy_paste", "do_cut fs_rename failed '%s'", errmsg) diff --git a/lua/nvim-tree/actions/fs/rename-file.lua b/lua/nvim-tree/actions/fs/rename-file.lua index 3ef08b0d268..d37e35b5125 100644 --- a/lua/nvim-tree/actions/fs/rename-file.lua +++ b/lua/nvim-tree/actions/fs/rename-file.lua @@ -15,6 +15,7 @@ function M.rename(node, to) return end + events._dispatch_will_rename_node(node.absolute_path, to) local success, err = vim.loop.fs_rename(node.absolute_path, to) if not success then return notify.warn(err_fmt(node.absolute_path, to, err)) diff --git a/lua/nvim-tree/events.lua b/lua/nvim-tree/events.lua index c68b249cd55..0fbe8158797 100644 --- a/lua/nvim-tree/events.lua +++ b/lua/nvim-tree/events.lua @@ -6,6 +6,7 @@ local global_handlers = {} M.Event = { Ready = "Ready", + WillRenameNode = "WillRenameNode", NodeRenamed = "NodeRenamed", TreeOpen = "TreeOpen", TreeClose = "TreeClose", @@ -40,6 +41,11 @@ function M._dispatch_ready() dispatch(M.Event.Ready) end +--@private +function M._dispatch_will_rename_node(old_name, new_name) + dispatch(M.Event.WillRenameNode, { old_name = old_name, new_name = new_name }) +end + --@private function M._dispatch_node_renamed(old_name, new_name) dispatch(M.Event.NodeRenamed, { old_name = old_name, new_name = new_name })