diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ls-lisp.el | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index 217bebcfcb2..81ff14932c6 100644 --- a/lisp/ls-lisp.el +++ b/lisp/ls-lisp.el @@ -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) |