Mercurial > emacs
changeset 78043:0ef88721691e
(insert-directory): If an invalid regexp error is thrown, try using FILE
as a literal file name, not a wildcard.
Check for FILE as an existing file, not just a directory.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 23 Jun 2007 11:23:53 +0000 |
parents | a4fc864cfb2d |
children | fc9aecac2b6d |
files | lisp/ls-lisp.el |
diffstat | 1 files changed, 18 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ls-lisp.el Sat Jun 23 10:50:07 2007 +0000 +++ b/lisp/ls-lisp.el Sat Jun 23 11:23:53 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 @@ -230,9 +231,9 @@ ;; there is no wildcard, only a directory name. (if (and ls-lisp-support-shell-wildcards (string-match "[[?*]" file) - ;; Prefer an existing directory to wildcards, like + ;; Prefer an existing file to wildcards, like ;; dired-noselect does. - (not (file-directory-p file))) + (not (file-exists-p file))) (progn (or (not (eq (aref file (1- (length file))) ?/)) (setq file (substring file 0 (1- (length file))))) @@ -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))