[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10
From: |
Stefan Monnier |
Subject: |
Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500) |
Date: |
Fri, 16 Nov 2012 12:25:15 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
>> But if you can point me to concrete examples that need to work (and/or
>> that used to work), it would be very helpful.
> As an example of an advice from my .emacs that used to work:
> (defadvice delete-indentation (before my-delete-indentation activate compile)
> (when (called-interactively-p 'any)
> (ad-set-arg 0 (not (ad-get-arg 0)))))
OK, that's a good start.
My current code can handle uses of called-interactively-p in
after/before advice but not in around advice. Problem is: all advices
defined with `defadvice' are implemented as (advice-add foo :around ...)
and indeed your "before" advice cannot be implemented as a (advice-add
foo :before ...) because it modifies arguments.
Hmm... maybe advice-add's before and after advices should be different.
Instead of before being like
(lambda (&rest r) (apply FUNCTION r) (apply OLDFUN r))
it should maybe be like
(lambda (&rest r) (apply OLDFUN (apply FUNCTION r)))
Or maybe this should be a new WHERE, which we could call `:filter-args',
and we could have a corresponding `:filter-return'.
In that case my code would handle:
(advice-add 'delete-indentation :filter-args
(lambda (arg &rest args)
(cons (or (called-interactively-p 'any) arg) args)))
-- Stefan
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), (continued)
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Katsumi Yamaoka, 2012/11/13
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Juanma Barranquero, 2012/11/14
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Katsumi Yamaoka, 2012/11/14
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Stefan Monnier, 2012/11/14
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Ivan Kanis, 2012/11/15
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Katsumi Yamaoka, 2012/11/15
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Stefan Monnier, 2012/11/15
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Katsumi Yamaoka, 2012/11/15
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Stefan Monnier, 2012/11/16
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Juanma Barranquero, 2012/11/16
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500),
Stefan Monnier <=
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Juanma Barranquero, 2012/11/16
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Stefan Monnier, 2012/11/16
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Juanma Barranquero, 2012/11/16
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Stefan Monnier, 2012/11/16
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Juanma Barranquero, 2012/11/16
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Stefan Monnier, 2012/11/18
- Re: Simple defadvice's stopped working (commit daa84a03, Thu Nov 8 23:10:16 2012 -0500), Juanma Barranquero, 2012/11/18