GNU bug report logs - #18399
24.4.50; nadvice :filter-args -vs- interactive

Previous Next

Package: emacs;

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):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Tom Tromey <tom <at> tromey.com>
Cc: Michael Heerdegen <michael_heerdegen <at> web.de>, 18399-done <at> debbugs.gnu.org
Subject: Re: bug#18399: 24.4.50; nadvice :filter-args -vs- interactive
Date: Thu, 04 Sep 2014 11:44:29 -0400
> 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.