branch: externals/denote commit 8ab4fac18160c4d26dcad8cce44ab73fc939bd2f Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Use a major mode instead of a function that sets up special-mode It is about the same code plus we can easily have a keymap there, get the option of a hook, and potentially are more flexible with what we can do. --- denote.el | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/denote.el b/denote.el index 8667921e9a..d04cb3e56d 100644 --- a/denote.el +++ b/denote.el @@ -1828,16 +1828,26 @@ If REVERSE is nil, use the value of the user option (or sort-by-component denote-sort-dired-default-sort-component 'identifier) (or reverse denote-sort-dired-default-reverse-sort nil))) -(defun denote-sort-dired--revert-to-empty () - "Revert current Dired buffer to an empty buffer with a warning." - (when (derived-mode-p 'dired-mode) - (let ((inhibit-read-only t)) - (special-mode) - (erase-buffer) - (delete-all-overlays) - (insert (propertize "Denote Dired" 'face 'bold)) - (insert "\n\n") - (insert (propertize "No more matching files" 'face 'warning))))) +(defvar denote-dired-empty-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "q") #'quit-window) + (define-key map (kbd "k") #'kill-buffer-and-window) + ;; TODO 2025-07-08: Maybe this is worth implementing. The idea is + ;; to go back to the search. + ;; + ;; (define-key map (kbd "g") #'denote-dired-empty-revert-buffer) + map) + "Key map for `denote-dired-empty-mode'.") + +(define-derived-mode denote-dired-empty-mode special-mode "Denote Dired Empty" + "Major mode of a `denote-sort-dired' that no longer matches anything." + :interactive nil + (let ((inhibit-read-only t)) + (erase-buffer) + (delete-all-overlays) + (insert (propertize "Denote Dired" 'face 'bold)) + (insert "\n\n") + (insert (propertize "No more matching files" 'face 'warning)))) (defun denote-sort-dired--prepare-buffer (directory files-fn dired-name buffer-name) "Prepare buffer for `denote-sort-dired'. @@ -1863,7 +1873,7 @@ BUFFER-NAME is the name of the resulting buffer." (progn (setq-local dired-directory (cons dired-name files)) (dired-revert)) - (denote-sort-dired--revert-to-empty))))) + (denote-dired-empty-mode))))) buffer-name)) (defun denote-sort-dired--find-common-directory (directories)