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)

Reply via email to