Function: ediff-read-file-name
ediff-read-file-name is a byte-compiled function defined in
ediff-util.el.gz.
Signature
(ediff-read-file-name PROMPT DEFAULT-DIR DEFAULT-FILE &optional NO-DIRS)
Source Code
;; Defined in /usr/src/emacs/lisp/vc/ediff-util.el.gz
;; This is adapted from a similar function in `emerge.el'.
;; PROMPT should not have a trailing ': ', so that it can be modified
;; according to context.
;; If DEFAULT-FILE is set, it should be used as the default value.
;; If DEFAULT-DIR is non-nil, use it as the default directory.
;; Otherwise, use the value of `default-directory.'
(defun ediff-read-file-name (prompt default-dir default-file &optional no-dirs)
;; hack default-dir if it is not set
(setq default-dir
(file-name-as-directory
(ediff-abbreviate-file-name
(expand-file-name (or default-dir
(and default-file
(file-name-directory default-file))
default-directory)))))
;; strip the directory from default-file
(if default-file
(setq default-file (file-name-nondirectory default-file)))
(if (string= default-file "")
(setq default-file nil))
(let ((defaults (and (fboundp 'dired-dwim-target-defaults)
(dired-dwim-target-defaults
(and default-file (list default-file))
default-dir)))
f)
(setq f (minibuffer-with-setup-hook
(lambda () (when defaults
(setq minibuffer-default defaults)))
(read-file-name
(format-prompt prompt (or default-file default-dir))
default-dir
(or default-file default-dir)
t ; must match, no-confirm
(if default-file (file-name-directory default-file)))))
(setq f (expand-file-name f default-dir))
;; If user entered a directory name, expand the default file in that
;; directory. This allows the user to enter a directory name for the
;; B-file and diff against the default-file in that directory instead
;; of a DIRED listing!
(if (and (file-directory-p f) default-file)
(setq f (expand-file-name
(file-name-nondirectory default-file) f)))
(if (and no-dirs (file-directory-p f))
(user-error "File %s is a directory" f))
f))