emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/minibuffer.el,v


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/minibuffer.el,v
Date: Wed, 23 Apr 2008 18:37:51 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Stefan Monnier <monnier>        08/04/23 18:37:51

Index: minibuffer.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/minibuffer.el,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- minibuffer.el       23 Apr 2008 18:19:54 -0000      1.24
+++ minibuffer.el       23 Apr 2008 18:37:50 -0000      1.25
@@ -834,7 +834,8 @@
   ;; If dir starts with user's homedir, change that to ~.
   (setq dir (abbreviate-file-name dir))
   ;; Likewise for default-filename.
-  (setq default-filename (abbreviate-file-name default-filename))
+  (if default-filename
+      (setq default-filename (abbreviate-file-name default-filename)))
   (let ((insdef (cond
                  ((and insert-default-directory (stringp dir))
                   (if initial
@@ -846,17 +847,25 @@
     (if read-file-name-function
         (funcall read-file-name-function
                  prompt dir default-filename mustmatch initial predicate)
-      (let ((default-directory (file-name-as-directory (expand-file-name dir)))
-            (completion-ignore-case read-file-name-completion-ignore-case)
+      (let ((completion-ignore-case read-file-name-completion-ignore-case)
             (minibuffer-completing-file-name t)
             (read-file-name-predicate (or predicate 'file-exists-p))
             (add-to-history nil))
 
         (let* ((val
                 (if (not (next-read-file-uses-dialog-p))
+                    ;; We used to pass `dir' to `read-file-name-internal' by
+                    ;; abusing the `predicate' argument.  It's better to
+                    ;; just use `default-directory', but in order to avoid
+                    ;; changing `default-directory' in the current buffer,
+                    ;; we don't let-bind it.
+                    (lexical-let ((dir (file-name-as-directory
+                                        (expand-file-name dir))))
+                      (minibuffer-with-setup-hook
+                          (lambda () (setq default-directory dir))
                     (completing-read prompt 'read-file-name-internal
                                      nil mustmatch insdef 'file-name-history
-                                     default-filename)
+                                         default-filename)))
                   ;; If DIR contains a file name, split it.
                   (let ((file (file-name-nondirectory dir)))
                     (when (and default-filename (not (zerop (length file))))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]