(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).
This commit is contained in:
parent
a7ad007929
commit
a42e7db0c4
1 changed files with 22 additions and 11 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue