Commit a42e7db0 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(minibuffer-with-setup-hook): New macro.

(find-file-read-args): Use it to avoid let-binding
minibuffer-with-setup-hook (which breaks turning on/off
file-name-shadow-mode while in the prompt).
parent a7ad0079
......@@ -928,20 +928,31 @@ documentation for additional customization information."
(defvar find-file-default nil
"Used within `find-file-read-args'.")
(defmacro minibuffer-with-setup-hook (fun &rest body)
"Add FUN to `minibuffer-setup-hook' while executing BODY.
BODY should use the minibuffer at most once.
Recursive uses of the minibuffer will not be affected."
(declare (indent 1) (debug t))
(let ((hook (make-symbol "setup-hook")))
`(let ((,hook
(lambda ()
;; Clear out this hook so it does not interfere
;; with any recursive minibuffer usage.
(remove-hook 'minibuffer-setup-hook ,hook)
(,fun))))
(unwind-protect
(progn
(add-hook 'minibuffer-setup-hook ,hook)
,@body)
(remove-hook 'minibuffer-setup-hook ,hook)))))
(defun find-file-read-args (prompt mustmatch)
(list (let ((find-file-default
(and buffer-file-name
(abbreviate-file-name buffer-file-name)))
(munge-default-fun
(lambda ()
(setq minibuffer-default find-file-default)
;; Clear out this hook so it does not interfere
;; with any recursive minibuffer usage.
(pop minibuffer-setup-hook)))
(minibuffer-setup-hook
minibuffer-setup-hook))
(add-hook 'minibuffer-setup-hook munge-default-fun)
(read-file-name prompt nil default-directory mustmatch))
(abbreviate-file-name buffer-file-name))))
(minibuffer-with-setup-hook
(lambda () (setq minibuffer-default find-file-default))
(read-file-name prompt nil default-directory mustmatch)))
t))
(defun find-file (filename &optional wildcards)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment