Commit b8c4a9e0 authored by Štěpán Němec's avatar Štěpán Němec Committed by Lars Ingebrigtsen

Add an advice-add/interactive spec example

* doc/lispref/functions.texi (Core Advising Primitives): Add an
advice-add example that extends the `interactive' spec (bug#17871).
parent b82adee1
Pipeline #2891 failed with stage
in 90 minutes and 2 seconds
......@@ -1752,6 +1752,30 @@ with such a spec would, and then return the corresponding list of arguments
that was built. E.g., @code{(advice-eval-interactive-spec "r\nP")} will
return a list of three elements, containing the boundaries of the region and
the current prefix argument.
For instance, if you want to make the @kbd{C-x m}
(@code{compose-mail}) command prompt for a @samp{From:} header, you
could say something like this:
@example
(defun my-compose-mail-advice (orig &rest args)
"Read From: address interactively."
(interactive
(lambda (spec)
(let* ((user-mail-address
(completing-read "From: "
'("one.address@@example.net"
"alternative.address@@example.net")))
(from (message-make-from user-full-name
user-mail-address))
(spec (advice-eval-interactive-spec spec)))
;; Put the From header into the OTHER-HEADERS argument.
(push (cons 'From from) (nth 2 spec))
spec)))
(apply orig args))
(advice-add 'compose-mail :around #'my-compose-mail-advice)
@end example
@end defun
@node Advising Named Functions
......
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