emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: address@hidden: RE: weird defadvice bug withbyte-compilation]


From: Eli Zaretskii
Subject: Re: address@hidden: RE: weird defadvice bug withbyte-compilation]
Date: Mon, 12 Dec 2005 07:52:42 +0200

> From: "Drew Adams" <address@hidden>
> Date: Sun, 11 Dec 2005 13:35:46 -0800
> 
>     Does this make sense?
> 
> It does, as far as I can tell. I don't understand all of it, however, I
> admit. I still don't understand, for instance:
> 
> 1. why byte-compiling the defadvice in bar.el would eval my-mode (my-mode
> does not even appear in bar.el)

I think it doesn't eval it, it just sees that my-mode is not bound.
The warning says "reference to free variable `my-mode'", see the
backtrace.  This is a standard warning from the byte compiler, it is
meant to help you detect typos in variable names.

> 2. why evaling the defadvice in foo.el would eval my-mode (the BODY of
> defadvice is not supposed to be quoted)

Because defadvice byte-compiles the function it creates on the fly, I
guess.

> 5. why selecting (require 'foo) and doing eval-region does not manifest the
> bug, but putting the cursor after (require 'foo) and doing `C-x C-e' does
> manifest the bug.

Because, by default, eval-expression-debug-on-error is t, and it
affects C-x C-e.  If I set eval-expression-debug-on-error to nil,
Emacs behaves with C-x C-e like it does with eval-region: it doesn't
pop up the *Backtrace* buffer in a separate frame, and the bug doesn't
happen.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]