From: Leo Liu Date: Mon, 21 Mar 2011 14:55:00 +0000 (+0800) Subject: Default read-file-name-function to a non-nil value X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~530 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b16ac1ecabbcfc6dc22831ee457bee1f95a2f21f;p=emacs.git Default read-file-name-function to a non-nil value See discussion thread: http://thread.gmane.org/gmane.emacs.devel/134000 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d087982edee..7175df3f656 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2011-03-21 Leo Liu + + * minibuffer.el (read-file-name-function): Change default value. + (read-file-name--defaults): Rename from read-file-name-defaults. + (read-file-name-default): Rename from read-file-name. + (read-file-name): Call read-file-name-function. + 2011-03-21 Glenn Morris * eshell/esh-opt.el (eshell-eval-using-options, eshell-process-args): diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index fa36da01cd9..e541be9fdd9 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1486,8 +1486,9 @@ except that it passes the file name through `substitute-in-file-name'." 'completion--file-name-table) "Internal subroutine for `read-file-name'. Do not call this.") -(defvar read-file-name-function nil - "If this is non-nil, `read-file-name' does its work by calling this function.") +(defvar read-file-name-function 'read-file-name-default + "The function called by `read-file-name' to do its work. +It should accept the same arguments as `read-file-name'.") (defcustom read-file-name-completion-ignore-case (if (memq system-type '(ms-dos windows-nt darwin cygwin)) @@ -1525,7 +1526,7 @@ such as making the current buffer visit no file in the case of (declare-function x-file-dialog "xfns.c" (prompt dir &optional default-filename mustmatch only-dir-p)) -(defun read-file-name-defaults (&optional dir initial) +(defun read-file-name--defaults (&optional dir initial) (let ((default (cond ;; With non-nil `initial', use `dir' as the first default. @@ -1592,6 +1593,12 @@ treated as equivalent to nil. See also `read-file-name-completion-ignore-case' and `read-file-name-function'." + (funcall (or read-file-name-function #'read-file-name-default) + prompt dir default-filename mustmatch initial predicate)) + +(defun read-file-name-default (prompt &optional dir default-filename mustmatch initial predicate) + "Default method for reading file names. +See `read-file-name' for the meaning of the arguments." (unless dir (setq dir default-directory)) (unless (file-name-absolute-p dir) (setq dir (expand-file-name dir))) (unless default-filename @@ -1613,9 +1620,6 @@ and `read-file-name-function'." (minibuffer--double-dollars dir))) (initial (cons (minibuffer--double-dollars initial) 0))))) - (if read-file-name-function - (funcall read-file-name-function - prompt dir default-filename mustmatch initial predicate) (let ((completion-ignore-case read-file-name-completion-ignore-case) (minibuffer-completing-file-name t) (pred (or predicate 'file-exists-p)) @@ -1651,7 +1655,7 @@ and `read-file-name-function'." (lambda () (with-current-buffer (window-buffer (minibuffer-selected-window)) - (read-file-name-defaults dir initial))))) + (read-file-name--defaults dir initial))))) (completing-read prompt 'read-file-name-internal pred mustmatch insdef 'file-name-history default-filename))) @@ -1725,7 +1729,7 @@ and `read-file-name-function'." (if history-delete-duplicates (delete val1 file-name-history) file-name-history))))))) - val))))) + val)))) (defun internal-complete-buffer-except (&optional buffer) "Perform completion on all buffers excluding BUFFER.