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.
This commit is contained in:
Protesilaos Stavrou 2025-07-08 10:47:30 +03:00
parent a1148a5da5
commit 8ab4fac181
No known key found for this signature in database
GPG key ID: 99BD6459CD5CA3EA

View file

@ -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)