mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-28 07:45:00 +00:00
Set the 'name' prop in 'define-advice'
In addition to naming the advice function `symbol@name', set the 'name' property to NAME. * lisp/emacs-lisp/nadvice.el (define-advice): set the 'name' property to NAME (requested in Bug#68114). Fixes Bug#68294. * doc/lispref/functions.texi (Advising Named Functions): Document that 'define-advice' installs the advice with the specified name.
This commit is contained in:
parent
f2cc8ee2a1
commit
9b8b352ebc
@ -2066,9 +2066,10 @@ code) obey the advice and other calls (from C code) do not.
|
||||
|
||||
@defmac define-advice symbol (where lambda-list &optional name depth) &rest body
|
||||
This macro defines a piece of advice and adds it to the function named
|
||||
@var{symbol}. The advice is an anonymous function if @var{name} is
|
||||
@code{nil} or a function named @code{symbol@@name}. See
|
||||
@code{advice-add} for explanation of other arguments.
|
||||
@var{symbol}. If @var{name} is non-nil, the advice is named
|
||||
@code{@var{symbol}@@@var{name}} and installed with the name @var{name}; otherwise,
|
||||
the advice is anonymous. See @code{advice-add} for explanation of
|
||||
other arguments.
|
||||
@end defmac
|
||||
|
||||
@defun advice-add symbol where function &optional props
|
||||
|
6
etc/NEWS
6
etc/NEWS
@ -1410,6 +1410,12 @@ values.
|
||||
|
||||
* Lisp Changes in Emacs 30.1
|
||||
|
||||
+++
|
||||
** 'define-advice' now sets the new advice's 'name' property to NAME
|
||||
Named advice defined with 'define-advice' can now be removed with
|
||||
'(advice-remove SYMBOL NAME)' in addition to '(advice-remove SYMBOL
|
||||
SYMBOL@NAME)'.
|
||||
|
||||
+++
|
||||
** New function 'require-with-check' to detect new versions shadowing.
|
||||
This is like 'require', but it checks whether the argument 'feature'
|
||||
|
@ -585,8 +585,8 @@ of the piece of advice."
|
||||
(defmacro define-advice (symbol args &rest body)
|
||||
"Define an advice and add it to function named SYMBOL.
|
||||
See `advice-add' and `add-function' for explanation on the
|
||||
arguments. Note if NAME is nil the advice is anonymous;
|
||||
otherwise it is named `SYMBOL@NAME'.
|
||||
arguments. If NAME is non-nil, the advice is named `SYMBOL@NAME'
|
||||
and installed with the name NAME; otherwise, the advice is anonymous.
|
||||
|
||||
\(fn SYMBOL (HOW LAMBDA-LIST &optional NAME DEPTH) &rest BODY)"
|
||||
(declare (indent 2) (doc-string 3) (debug (sexp sexp def-body)))
|
||||
@ -597,7 +597,9 @@ otherwise it is named `SYMBOL@NAME'.
|
||||
(lambda-list (nth 1 args))
|
||||
(name (nth 2 args))
|
||||
(depth (nth 3 args))
|
||||
(props (and depth `((depth . ,depth))))
|
||||
(props (append
|
||||
(and depth `((depth . ,depth)))
|
||||
(and name `((name . ,name)))))
|
||||
(advice (cond ((null name) `(lambda ,lambda-list ,@body))
|
||||
((or (stringp name) (symbolp name))
|
||||
(intern (format "%s@%s" symbol name)))
|
||||
|
Loading…
Reference in New Issue
Block a user