+2007-06-23 Eli Zaretskii <eliz@gnu.org>
+
+ * ls-lisp.el (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.
+
2007-06-23 Juanma Barranquero <lekktu@gmail.com>
* ruler-mode.el (ruler-mode): Prevent clobbering the original
;; 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
;; 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)))))
(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))