Mercurial > emacs
changeset 81584:95b281a8d13c
(insert-directory): If an invalid regexp error is thrown, try using FILE
as a literal file name, not a wildcard.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 23 Jun 2007 11:14:45 +0000 |
parents | b31da370880d |
children | e976e955eb68 |
files | lisp/ls-lisp.el |
diffstat | 1 files changed, 16 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ls-lisp.el Sat Jun 23 10:27:31 2007 +0000 +++ b/lisp/ls-lisp.el Sat Jun 23 11:14:45 2007 +0000 @@ -216,6 +216,7 @@ ;; We need the directory in order to find the right handler. (let ((handler (find-file-name-handler (expand-file-name file) 'insert-directory)) + (orig-file file) wildcard-regexp) (if handler (funcall handler 'insert-directory file switches @@ -244,9 +245,21 @@ (file-name-nondirectory file)) file (file-name-directory file)) (if (memq ?B switches) (setq wildcard-regexp "[^~]\\'"))) - (ls-lisp-insert-directory - file switches (ls-lisp-time-index switches) - wildcard-regexp full-directory-p) + (condition-case err + (ls-lisp-insert-directory + file switches (ls-lisp-time-index switches) + wildcard-regexp full-directory-p) + (invalid-regexp + ;; Maybe they wanted a literal file that just happens to + ;; use characters special to shell wildcards. + (if (equal (cadr err) "Unmatched [ or [^") + (progn + (setq wildcard-regexp (if (memq ?B switches) "[^~]\\'") + file (file-relative-name orig-file)) + (ls-lisp-insert-directory + file switches (ls-lisp-time-index switches) + nil full-directory-p)) + (signal (car err) (cdr err))))) ;; Try to insert the amount of free space. (save-excursion (goto-char (point-min))