* files.el (minibuffer-with-setup-hook): Allow (:append FUN) to

append to minibuffer-setup-hook.

Fixes: debbugs:18341
This commit is contained in:
Leo Liu 2014-08-29 10:48:17 +08:00
parent 562d55be2c
commit fd53ccaafc
2 changed files with 21 additions and 10 deletions

View file

@ -1,3 +1,8 @@
2014-08-29 Leo Liu <sdl.web@gmail.com>
* files.el (minibuffer-with-setup-hook): Allow (:append FUN) to
append to minibuffer-setup-hook. (Bug#18341)
2014-08-28 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/cc-defs.el: Expose c-lanf-defconst's expressions to the

View file

@ -1375,6 +1375,9 @@ return value, which may be passed as the REQUIRE-MATCH arg to
(defmacro minibuffer-with-setup-hook (fun &rest body)
"Temporarily add FUN to `minibuffer-setup-hook' while executing BODY.
FUN can also be (:append FUN1), in which case FUN1 is appended to
`minibuffer-setup-hook'.
BODY should use the minibuffer at most once.
Recursive uses of the minibuffer are unaffected (FUN is not
called additional times).
@ -1383,20 +1386,23 @@ This macro actually adds an auxiliary function that calls FUN,
rather than FUN itself, to `minibuffer-setup-hook'."
(declare (indent 1) (debug t))
(let ((hook (make-symbol "setup-hook"))
(funsym (make-symbol "fun")))
(funsym (make-symbol "fun"))
(append nil))
(when (eq (car-safe fun) :append)
(setq append '(t) fun (cadr fun)))
`(let ((,funsym ,fun)
,hook)
(setq ,hook
(lambda ()
;; Clear out this hook so it does not interfere
;; with any recursive minibuffer usage.
(remove-hook 'minibuffer-setup-hook ,hook)
(funcall ,funsym)))
(lambda ()
;; Clear out this hook so it does not interfere
;; with any recursive minibuffer usage.
(remove-hook 'minibuffer-setup-hook ,hook)
(funcall ,funsym)))
(unwind-protect
(progn
(add-hook 'minibuffer-setup-hook ,hook)
,@body)
(remove-hook 'minibuffer-setup-hook ,hook)))))
(progn
(add-hook 'minibuffer-setup-hook ,hook ,@append)
,@body)
(remove-hook 'minibuffer-setup-hook ,hook)))))
(defun find-file-read-args (prompt mustmatch)
(list (read-file-name prompt nil default-directory mustmatch)