Subject: bug#12685: 24.2; lexical binding breaks edebug conditional breakpoints

From: Toby Cubitt <[email-masked]>
Date: Sat, 20 Oct 2012 03:08:35 +0200

On Fri, Oct 19, 2012 at 05:41:49PM -0400, Stefan Monnier wrote:
> > Conditional breakpoints whose condition refers to a lexically-scoped
> > variable fail with a "Symbol's value as variable is void" error.
> > This is almost certainly caused by the same issue as
> > http://thread.gmane.org/gmane.emacs.devel/150556
> 
> Indeed.
> 
> > The current behaviour definitely contradicts this. Not only does the
> > breakpoint not work, the error is not "ignored and treated as if the
> > result were nil", but instead aborts execution.
> 
> The fact that it aborts execution should be fixable before the release
> (tho I'm not sure that it's really better to silently mis-interpret the
> user's request),

Indeed. But that's what the documentation says it should do, so either
the documentation or the implementation needs to be changed so that they
at least match.

> But making it actually work will require more substantial changes, so I
> don't think it's likely to be fixed for 24.3.

I figured as much. Maybe for now we could mention in the Edebug section
of the Elisp manual which parts of edebug won't (currently) work in
lexically-scoped code? As far as I can see, M-: and conditional
breakpoints should be the only things that are affected. (Though
`edebug-step-in' doesn't always seem to work for me lately, but I can't
reliably reproduce this at the moment.)

Maybe the docs should even recommend disabling lexical-binding when
edebugging for now. (Is there a good way of configuring this to happen
automatically? `edebug-setup-hook' doesn't seem quite the right place,
since it gets reset to nil after use.)

Best,
Toby
-- 
Dr T. S. Cubitt
Mathematics and Quantum Information group
Department of Mathematics
Complutense University
Madrid, Spain

email: [email-masked]
web:   www.dr-qubit.org