* files.el (minibuffer-with-setup-hook): Allow (:append FUN) to
append to minibuffer-setup-hook. Fixes: debbugs:18341
This commit is contained in:
parent
562d55be2c
commit
fd53ccaafc
2 changed files with 21 additions and 10 deletions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue