diff options
author | Miles Bader <miles@gnu.org> | 2007-07-09 08:00:55 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 2007-07-09 08:00:55 +0000 |
commit | 1011c48763982d02797a7058556d29f639f6efca (patch) | |
tree | 5f1b7529b4cc483b73475b89245633c5848b8a5e /lisp/ls-lisp.el | |
parent | 6f06dac7b57b8d73f4b26a855cd9862630192029 (diff) | |
parent | 69e4c7c4bacf19e9e004605fcb1c067e478beffe (diff) | |
download | emacs-1011c48763982d02797a7058556d29f639f6efca.tar.gz emacs-1011c48763982d02797a7058556d29f639f6efca.tar.bz2 emacs-1011c48763982d02797a7058556d29f639f6efca.zip |
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 803-805)
- Update from CVS
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-227
Diffstat (limited to 'lisp/ls-lisp.el')
-rw-r--r-- | lisp/ls-lisp.el | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index 94c8004ff5e..b4cd485d7a0 100644 --- a/lisp/ls-lisp.el +++ b/lisp/ls-lisp.el @@ -216,6 +216,7 @@ that work are: A a c i r S s t u U X g G B C R and F partly." ;; 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 @@ -229,7 +230,10 @@ that work are: A a c i r S s t u U X g G B C R and F partly." ;; `ls' don't mind, we certainly do, because it makes us think ;; there is no wildcard, only a directory name. (if (and ls-lisp-support-shell-wildcards - (string-match "[[?*]" file)) + (string-match "[[?*]" file) + ;; Prefer an existing file to wildcards, like + ;; dired-noselect does. + (not (file-exists-p file))) (progn (or (not (eq (aref file (1- (length file))) ?/)) (setq file (substring file 0 (1- (length file))))) @@ -241,9 +245,21 @@ that work are: A a c i r S s t u U X g G B C R and F partly." (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)) |