branch: externals/denote
commit 737c64795731cebf34953c5925705c091ac46ce2
Author: Protesilaos Stavrou <i...@protesilaos.com>
Commit: Protesilaos Stavrou <i...@protesilaos.com>
Rename buffer post file rename
---
denote-dired.el | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/denote-dired.el b/denote-dired.el
index bf3de7f544..e70faf74aa 100644
--- a/denote-dired.el
+++ b/denote-dired.el
@@ -178,6 +178,21 @@ everything works as intended."
((denote-dired--file-attributes-time file))
(t (format-time-string denote--id-format))))
+(defun denote-dired--rename-buffer (old-name new-name)
+ "Rename OLD-NAME buffer to NEW-NAME, when appropriate."
+ (when-let ((old-buf (find-buffer-visiting old-name)))
+ (with-current-buffer old-buf
+ ;; We get the window to replace the buffer without affecting the
+ ;; window layout.
+ (let ((win (get-buffer-window old-buf)))
+ (rename-buffer (file-name-nondirectory new-name))
+ ;; TODO 2022-06-17: Is there a better way to avoid duplication
+ ;; between old and new? It seems wrong to kill-buffer and then
+ ;; find-file.
+ (kill-buffer (find-buffer-visiting old-name))
+ (with-selected-window win
+ (find-file new-name))))))
+
;;;###autoload
(defun denote-dired-rename-file (file title keywords)
"Rename FILE to include TITLE and KEYWORDS.
@@ -228,6 +243,7 @@ attachments that the user adds to their notes."
(propertize old-name 'face 'error)
(propertize (file-name-nondirectory new-name) 'face
'success)))
(rename-file old-name new-name nil)
+ (denote-dired--rename-buffer old-name new-name)
(run-hook-with-args 'denote-dired-post-rename-functions new-name title
keywords)))))
(defun denote-dired-update-dired-buffers (&rest _)