Fix expansion of wildcards in ls-lisp.el

* lisp/ls-lisp.el (ls-lisp--dired): Fix error message text.
Handle the case of a wildcard specifying directories.  (Bug#60819)
This commit is contained in:
Eli Zaretskii 2023-01-15 10:47:24 +02:00
parent b5e0260f42
commit b365a7cc32

View file

@ -482,8 +482,22 @@ not contain `d', so that a full listing is expected."
(if (not dir-wildcard)
(funcall orig-fun dir-or-list switches)
(let* ((default-directory (car dir-wildcard))
(files (file-expand-wildcards (cdr dir-wildcard)))
(wildcard (cdr dir-wildcard))
(files (file-expand-wildcards wildcard))
(dir (car dir-wildcard)))
;; When the wildcard ends in a slash, file-expand-wildcards
;; returns nil; fix that by treating the wildcards as
;; specifying only directories whose names match the
;; widlcard.
(if (and (null files)
(directory-name-p wildcard))
(setq files
(delq nil
(mapcar (lambda (fname)
(if (file-accessible-directory-p fname)
fname))
(file-expand-wildcards
(directory-file-name wildcard))))))
(if files
(let ((inhibit-read-only t)
(buf
@ -494,7 +508,7 @@ not contain `d', so that a full listing is expected."
(dired-goto-next-file)
(forward-line 0)
(insert " wildcard " (cdr dir-wildcard) "\n"))))
(user-error "No files matching regexp")))))))
(user-error "No files matching wildcard")))))))
(advice-add 'dired :around #'ls-lisp--dired)