Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Can an :around advice know the name of the function it is advising?

2 views
Skip to first unread message

Marcin Borkowski

unread,
Feb 14, 2016, 3:02:35 AM2/14/16
to Help Gnu Emacs mailing list
Hi all,

I would like to be able for an :around advice to know not only the
"original function" it is supposed to call, but also its /name/. (Yes,
I now a function need not have /one/ name -- it may have more or less --
but assume that I added the advice to a command having one name in
a usual manner.) Is it even possible? (I guess not, but I wanted to
make sure.)

TIA,

--
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University

Michael Heerdegen

unread,
Feb 14, 2016, 11:14:07 AM2/14/16
to help-gn...@gnu.org
Marcin Borkowski <mb...@mbork.pl> writes:

> I would like to be able for an :around advice to know not only the
> "original function" it is supposed to call, but also its /name/. (Yes,
> I now a function need not have /one/ name -- it may have more or less --
> but assume that I added the advice to a command having one name in
> a usual manner.) Is it even possible? (I guess not, but I wanted to
> make sure.)

If you know a name of the function you want to advice, you can make it
known to the piece of advice too, of course ;-) But no, there is no
special mechanism for finding the name of the advised function from
within the advice code AFAIK - apart from looking at the
`backtrace-frame's or other brutal things.

AFAICT the process of installing advises only touches functions, but
doesn't cause changes on the symbol level apart from the functions
fbound to them.

Michael.


Michael Heerdegen

unread,
Feb 14, 2016, 11:40:45 AM2/14/16
to help-gn...@gnu.org
Michael Heerdegen <michael_...@web.de> writes:

> AFAICT the process of installing advises only touches functions, but
> doesn't cause changes on the symbol level apart from the functions
> fbound to them.

Correction: it can change the property list of a symbol. But that
doesn't help: if you look at the symbol-function of an advised named
function, there is no reference to the name there.

But well, that's not the case for unadvised named functions as well.

Michael.



Marcin Borkowski

unread,
Feb 14, 2016, 1:48:03 PM2/14/16
to Michael Heerdegen, help-gn...@gnu.org

On 2016-02-14, at 17:13, Michael Heerdegen <michael_...@web.de> wrote:

> Marcin Borkowski <mb...@mbork.pl> writes:
>
>> I would like to be able for an :around advice to know not only the
>> "original function" it is supposed to call, but also its /name/. (Yes,
>> I now a function need not have /one/ name -- it may have more or less --
>> but assume that I added the advice to a command having one name in
>> a usual manner.) Is it even possible? (I guess not, but I wanted to
>> make sure.)
>
> If you know a name of the function you want to advice, you can make it
> known to the piece of advice too, of course ;-) But no, there is no

Yes, and as you have seen in my other message (thanks for the answer,
I'll reply later) I went that route.

> special mechanism for finding the name of the advised function from
> within the advice code AFAIK - apart from looking at the
> `backtrace-frame's or other brutal things.
>
> AFAICT the process of installing advises only touches functions, but
> doesn't cause changes on the symbol level apart from the functions
> fbound to them.

Thanks.

> Michael.

Best,
0 new messages