From 8fa640937142bed20941bd277c9d06e011c83b0c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 23 Jun 2007 11:14:45 +0000 Subject: [PATCH] (insert-directory): If an invalid regexp error is thrown, try using FILE as a literal file name, not a wildcard. --- lisp/ls-lisp.el | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index 461e1ea44cc..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 @@ -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)) -- 2.39.2