]> git.eshelyaron.com Git - emacs.git/commitdiff
Set the 'name' prop in 'define-advice'
authorSteven Allen <steven@stebalien.com>
Sat, 6 Jan 2024 17:19:12 +0000 (09:19 -0800)
committerEli Zaretskii <eliz@gnu.org>
Sat, 13 Jan 2024 09:43:01 +0000 (11:43 +0200)
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.

doc/lispref/functions.texi
etc/NEWS
lisp/emacs-lisp/nadvice.el

index 29e9f04a0764002e8d7570b72e533b92a32241d1..29061e6561c86c93707c6db0495191cb5dd17681 100644 (file)
@@ -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
index bce33f96aeededae7a103ee7ff3471b268cd21c2..5cf3e821627ba2f865c5bc0d12be984cc09bbcdb 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1410,6 +1410,12 @@ values.
 \f
 * 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'
index de287e43b21911a4b2b248574f3d2187ff6894f1..7524ab18e58959dd9e97ebba16f952a509babc8f 100644 (file)
@@ -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)))