[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#12610: unable to use macro in defadvice
From: |
Glenn Morris |
Subject: |
bug#12610: unable to use macro in defadvice |
Date: |
Fri, 12 Oct 2012 13:54:47 -0400 |
User-agent: |
Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) |
Stefan Monnier wrote:
> Instead, we should expose the code as code rather than hide it as
> data, so that macro-expansion can take place without calling it
> explicitly and so the byte-compiler gets to see the code, optimize it
> and emit warnings where needed.
Sounds right.
> I.e. I think the patch should start more along the lines of the one
> below (100% guaranteed untested).
It causes warnings like:
In toplevel form:
uniquify.el:479:13:Warning: assignment to free variable `ad-return-value'
uniquify.el:487:41:Warning: reference to free variable `ad-return-value'
In end of data:
uniquify.el:511:1:Warning: the function `ad-get-arg' is not known to be
defined.
More importantly, it doesn't work...
emacs -Q -l uniquify
-> byte-code: Symbol's function definition is void: ad-make-advice
Compiling the initial example from this report gives:
(byte-code "<STUFF>" [ad-add-advice kill-buffer ad-make-advice
show-diff-rephrase-question nil t advice #[nil "<STUFF>" [#:--cl-var--
ad-do-it read-char-choice "(s/k/q)? " append "sSKkQq" nil memql (115 83)
(107 75) (113 81)] 5 "Prompt when a buffer is about to be killed."]
around ad-activate] 8)