mirror of
https://github.com/protesilaos/denote.git
synced 2026-09-15 17:56:19 -04:00
Fix: Handle no-matching-files in denote-sort-dired
Where there are no files matching the input regex, `denote-sort-get-directory-files` returns nil. Passing this to `dired` throws an error: ``` (file-missing "Reading directory" "No such file or directory" ".../denote/Testing Dired") ``` This commit handles the empty case by returning an appropriate error message.
This commit is contained in:
parent
dec04ce383
commit
96e5161051
|
|
@ -174,26 +174,27 @@ a non-nil value, respectively."
|
|||
(denote-sort-component-prompt)
|
||||
(y-or-n-p "Reverse sort? ")))
|
||||
(let* ((default-directory (denote-directory))
|
||||
;; NOTE 2023-12-04: Passing the FILES-MATCHING-REGEXP here produces
|
||||
;; an error if the regexp contains a wildcard for a directory. I
|
||||
;; can reproduce this in emacs -Q and am not sure if it is a bug.
|
||||
;; Anyway, I will report it upstream, but even if it is fixed we
|
||||
;; cannot use it for now (whatever fix will be available for Emacs
|
||||
;; 30+).
|
||||
;;
|
||||
;; (format "Denote sort `%s' by `%s'" files-matching-regexp sort-by-component)
|
||||
;; NOTE 2023-12-04: Passing the FILES-MATCHING-REGEXP as
|
||||
;; buffer-name produces an error if the regexp contains a
|
||||
;; wildcard for a directory. I can reproduce this in emacs -Q
|
||||
;; and am not sure if it is a bug. Anyway, I will report it
|
||||
;; upstream, but even if it is fixed we cannot use it for now
|
||||
;; (whatever fix will be available for Emacs 30+).
|
||||
(denote-sort-dired-buffer-name (format "Denote sort `%s' by `%s'" files-matching-regexp sort-by-component))
|
||||
(buffer-name (format "Denote sort by `%s' at %s" sort-by-component (format-time-string "%T")))
|
||||
(files (denote-sort-get-directory-files files-matching-regexp sort-by-component reverse))
|
||||
(dired-buffer (dired (cons buffer-name (mapcar #'file-relative-name files)))))
|
||||
(setq denote-sort--dired-buffer dired-buffer)
|
||||
(with-current-buffer dired-buffer
|
||||
(setq-local revert-buffer-function
|
||||
(lambda (&rest _)
|
||||
(kill-buffer dired-buffer)
|
||||
(denote-sort-dired files-matching-regexp sort-by-component reverse)))))
|
||||
;; Because of the above NOTE, I am printing a message. Not what I
|
||||
;; want, but it is better than nothing...
|
||||
(message "Denote sort `%s' by `%s'" files-matching-regexp sort-by-component))
|
||||
(files (denote-sort-get-directory-files files-matching-regexp sort-by-component reverse)))
|
||||
(if (car files)
|
||||
(let ((dired-buffer (dired (cons buffer-name (mapcar #'file-relative-name files)))))
|
||||
(setq denote-sort--dired-buffer dired-buffer)
|
||||
(with-current-buffer dired-buffer
|
||||
(setq-local revert-buffer-function
|
||||
(lambda (&rest _)
|
||||
(kill-buffer dired-buffer)
|
||||
(denote-sort-dired files-matching-regexp sort-by-component reverse))))
|
||||
;; Because of the above NOTE, I am printing a message. Not what I
|
||||
;; want, but it is better than nothing...
|
||||
(message denote-sort-dired-buffer-name))
|
||||
(message "No matching files for %s" denote-sort-dired-buffer-name))))
|
||||
|
||||
(provide 'denote-sort)
|
||||
;;; denote-sort.el ends here
|
||||
|
|
|
|||
Loading…
Reference in a new issue