From e22103657655be81bf05ffe503afb3c00ca89336 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 30 Dec 2023 01:22:29 +1100 Subject: [PATCH] feat: move a file to a new directory with its existing name, closes #35 --- README.md | 6 +++--- lua/genghis.lua | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4135873..bfde0c6 100644 --- a/README.md +++ b/README.md @@ -70,9 +70,9 @@ keymap("x", "x", genghis.moveSelectionToNewFile) and moves the current selection to that new file. (Note that this is a Visual Line Mode command; the selection is moved linewise.) - `.renameFile` or `:Rename`: Rename the current file. -- `.moveAndRenameFile` or `:Move`: Move and Rename the current file. Works like -the UNIX `mv` command. Best used with [autocompletion of -directories](#autocompletion-of-directories). +- `.moveAndRenameFile` or `:Move`: Move and Rename the current file. Keeps the +old name if the new path ends with `/`. Works like the UNIX `mv` command. Best +used with [autocompletion of directories](#autocompletion-of-directories). The following applies to all commands above: - If no extension has been provided, uses the extension of the original file. diff --git a/lua/genghis.lua b/lua/genghis.lua index 20350b4..376158b 100644 --- a/lua/genghis.lua +++ b/lua/genghis.lua @@ -130,9 +130,12 @@ local function fileOp(op) -- VALIDATION OF FILENAME if not newName then return end -- input has been canceled + if newName:find("/$") then + newName = newName .. oldName -- use the new directory with the old name + end + local invalidName = newName:find("^%s+$") or newName:find("[\\:]") - or newName:find("/$") or (newName:find("^/") and not op == "move-rename") local sameName = newName == oldName local emptyInput = newName == ""