branch: externals/denote commit f21a99775d6b690ea1b64788451c2d2bff15ab28 Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Improve rename prompt; only rename regular files Thanks to Frank Ehmsen for the feedback on the mailing list: <https://lists.sr.ht/~protesilaos/denote/%3c9deea16e-d0d0-91b0-2b6a-0b8276406...@eh-is.de%3E>. --- denote-dired.el | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/denote-dired.el b/denote-dired.el index c12299f618..1e10ae264e 100644 --- a/denote-dired.el +++ b/denote-dired.el @@ -194,6 +194,22 @@ everything works as intended." (with-selected-window win (find-file new-name))))))) +(defun denote-dired--rename-dired-file-or-prompt () + "Return Dired file at point, else prompt for one." + (or (dired-get-filename nil t) + (let* ((file (buffer-file-name)) + (format (if file + (format "Rename file Denote-style [%s]: " file) + "Rename file Denote-style: "))) + (read-file-name format nil file t nil)))) + +(defun denote-dired--rename-file-is-regular (file) + "Throw error is FILE is not regular, else return FILE." + (if (or (file-directory-p file) + (not (file-regular-p file))) + (user-error "Only rename regular files") + file)) + ;;;###autoload (defun denote-dired-rename-file (file title keywords) "Rename FILE to include TITLE and KEYWORDS. @@ -225,7 +241,7 @@ notes, (ii) complement note-taking, such as by renaming attachments that the user adds to their notes." (interactive (list - (or (dired-get-filename nil t) (read-file-name "Rename file Denote-style: ")) + (denote-dired--rename-file-is-regular (denote-dired--rename-dired-file-or-prompt)) (denote--title-prompt) (denote--keywords-prompt))) (let* ((dir (file-name-directory file))