]> git.eshelyaron.com Git - emacs.git/commitdiff
(dired-read-dir-and-switches):
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 2 May 2008 17:20:07 +0000 (17:20 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 2 May 2008 17:20:07 +0000 (17:20 +0000)
Set minibuffer-completing-file-name and call substitute-in-file-name.

lisp/ChangeLog
lisp/dired.el

index 1aef1c8d7013e5a847a8fc8512d3e1c2dcb35228..f79c5fc850b9ecf00c64bdb4d2da5d996a781493 100644 (file)
@@ -1,5 +1,8 @@
 2008-05-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * dired.el (dired-read-dir-and-switches):
+       Set minibuffer-completing-file-name and call substitute-in-file-name.
+
        * minibuffer.el (completion-hilit-commonality): Revert last change:
        the leftover code was actually useful.
 
index b301bda7e6b4a3a892ee77c2bac044dfbcb56624..a2f0f009d33f9e5fbae17c35c3753fd4e57613b0 100644 (file)
@@ -589,41 +589,44 @@ Don't use that together with FILTER."
 
 (defun dired-read-dir-and-switches (str)
   ;; For use in interactive.
-  (reverse (list
-           (if current-prefix-arg
-               (read-string "Dired listing switches: "
-                            dired-listing-switches))
-           ;; If a dialog is about to be used, call read-directory-name so
-           ;; the dialog code knows we want directories.  Some dialogs can
-           ;; only select directories or files when popped up, not both.
-           (if (next-read-file-uses-dialog-p)
-               (read-directory-name (format "Dired %s(directory): " str)
-                                    nil default-directory nil)
-             (lexical-let ((default (and buffer-file-name
-                                          (abbreviate-file-name buffer-file-name)))
-                            (defdir default-directory))
-               (minibuffer-with-setup-hook
-                   (lambda ()
-                      (setq minibuffer-default default)
-                      (setq default-directory defdir))
-                  (completing-read
-                   (format "Dired %s(directory): " str)
-                   ;; We need a mix of read-file-name and read-directory-name
-                   ;; so that completion to directories is preferred, but if
-                   ;; the user wants to enter a global pattern, he can still
-                   ;; use completion on filenames to help him write the pattern.
-                   ;; Essentially, we want to use
-                   ;; (completion-table-with-predicate
-                   ;;  'read-file-name-internal 'file-directory-p nil)
-                   ;; but that doesn't work because read-file-name-internal
-                   ;; does not obey its `predicate' argument.
-                   (completion-table-in-turn
-                    (lambda (str pred action)
-                      (let ((read-file-name-predicate 'file-directory-p))
-                        (complete-with-action
-                         action 'read-file-name-internal str nil)))
-                    'read-file-name-internal)
-                   nil nil (abbreviate-file-name defdir) 'file-name-history)))))))
+  (reverse
+   (list
+    (if current-prefix-arg
+        (read-string "Dired listing switches: "
+                     dired-listing-switches))
+    ;; If a dialog is about to be used, call read-directory-name so
+    ;; the dialog code knows we want directories.  Some dialogs can
+    ;; only select directories or files when popped up, not both.
+    (if (next-read-file-uses-dialog-p)
+        (read-directory-name (format "Dired %s(directory): " str)
+                             nil default-directory nil)
+      (lexical-let ((default (and buffer-file-name
+                                  (abbreviate-file-name buffer-file-name)))
+                    (defdir default-directory))
+        (minibuffer-with-setup-hook
+            (lambda ()
+              (setq minibuffer-default default)
+              (setq minibuffer-completing-file-name t)
+              (setq default-directory defdir))
+          (substitute-in-file-name
+           (completing-read
+            (format "Dired %s(directory): " str)
+            ;; We need a mix of read-file-name and read-directory-name
+            ;; so that completion to directories is preferred, but if
+            ;; the user wants to enter a global pattern, he can still
+            ;; use completion on filenames to help him write the pattern.
+            ;; Essentially, we want to use
+            ;; (completion-table-with-predicate
+            ;;  'read-file-name-internal 'file-directory-p nil)
+            ;; but that doesn't work because read-file-name-internal
+            ;; does not obey its `predicate' argument.
+            (completion-table-in-turn
+             (lambda (str pred action)
+               (let ((read-file-name-predicate 'file-directory-p))
+                 (complete-with-action
+                  action 'read-file-name-internal str nil)))
+             'read-file-name-internal)
+            nil nil (abbreviate-file-name defdir) 'file-name-history))))))))
 
 ;;;###autoload (define-key ctl-x-map "d" 'dired)
 ;;;###autoload