GNU bug report logs -
#18399
24.4.50; nadvice :filter-args -vs- interactive
Previous Next
Reported by: Tom Tromey <tom <at> tromey.com>
Date: Wed, 3 Sep 2014 20:03:01 UTC
Severity: minor
Tags: notabug
Found in version 24.4.50
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
Message #22 received at 18399-done <at> debbugs.gnu.org (full text, mbox):
> I looked at the docs again and I agree. Sorry about the noise. Perhaps
> a note and/or a small example here would be nice for future users. If
> we were both fooled by this then perhaps others will be as well.
I installed the patch below, which I hope will help clear up such
confusion.
Stefan
=== modified file 'doc/lispref/ChangeLog'
--- doc/lispref/ChangeLog 2014-08-19 18:56:29 +0000
+++ doc/lispref/ChangeLog 2014-09-04 15:42:28 +0000
@@ -1,3 +1,8 @@
+2014-09-04 Stefan Monnier <monnier <at> iro.umontreal.ca>
+
+ * functions.texi (Core Advising Primitives): Add a note about the
+ confusing treatment of `interactive' for :filter-args (bug#18399).
+
2014-08-19 Eli Zaretskii <eliz <at> gnu.org>
* display.texi (Bidirectional Display): Update the Emacs's class
=== modified file 'doc/lispref/functions.texi'
--- doc/lispref/functions.texi 2014-05-27 01:09:45 +0000
+++ doc/lispref/functions.texi 2014-09-04 15:40:13 +0000
@@ -1220,15 +1220,6 @@
This macro is the handy way to add the advice @var{function} to the function
stored in @var{place} (@pxref{Generalized Variables}).
-If @var{function} is not interactive, then the combined function will inherit
-the interactive spec, if any, of the original function. Else, the combined
-function will be interactive and will use the interactive spec of
-@var{function}. One exception: if the interactive spec of @var{function}
-is a function (rather than an expression or a string), then the interactive
-spec of the combined function will be a call to that function with as sole
-argument the interactive spec of the original function. To interpret the spec
-received as argument, use @code{advice-eval-interactive-spec}.
-
@var{where} determines how @var{function} is composed with the
existing function, e.g. whether @var{function} should be called before, or
after the original function. @xref{Advice combinators}, for the list of
@@ -1271,6 +1262,21 @@
@code{:override} advice will override not only the original function but all
other advices applied to it as well.
@end table
+
+If @var{function} is not interactive, then the combined function will inherit
+the interactive spec, if any, of the original function. Else, the combined
+function will be interactive and will use the interactive spec of
+@var{function}. One exception: if the interactive spec of @var{function}
+is a function (rather than an expression or a string), then the interactive
+spec of the combined function will be a call to that function with as sole
+argument the interactive spec of the original function. To interpret the spec
+received as argument, use @code{advice-eval-interactive-spec}.
+
+Note: The interactive spec of @var{function} will apply to the combined
+function and should hence obey the calling convention of the combined function
+rather than that of @var{function}. In many cases, it makes no difference
+since they are identical, but it does matter for @code{:around},
+@code{:filter-args}, and @code{filter-return}, where @var{function}.
@end defmac
@defmac remove-function place function
This bug report was last modified 10 years and 321 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.