]> git.eshelyaron.com Git - emacs.git/commitdiff
(insert-directory): If an invalid regexp error is thrown, try using FILE
authorEli Zaretskii <eliz@gnu.org>
Sat, 23 Jun 2007 11:14:45 +0000 (11:14 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 23 Jun 2007 11:14:45 +0000 (11:14 +0000)
as a literal file name, not a wildcard.

lisp/ls-lisp.el

index 461e1ea44cc12c6f69669babf8b782c1c1c65fb8..b4cd485d7a0925df79ea7c42ce1b74c8052fd8aa 100644 (file)
@@ -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
@@ -244,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))