[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#15101: 24.3.50; debugger-eval-expression broken
From: |
Drew Adams |
Subject: |
bug#15101: 24.3.50; debugger-eval-expression broken |
Date: |
Thu, 15 Aug 2013 08:06:37 -0700 (PDT) |
> > Start Emacs with: emacs -Q --eval '(let ((foo 123)) (debug))'
> > Then press e. Enter foo to evaluate the local variable foo. But it
> > doesn't work; it only generates the error:
> > debugger-eval-expression: Symbol's value as variable is void: foo
> > This used to work fine in previous versions.
>
> Indeed, this is a change that will trip up users. Here's what's
> happening: `e' will now run the code in the context in which the "code
> on the current line" was run.
>
> This refinement can be useful for dynamically bound variables, but was
> mostly added for lexically bound variables, where it's indispensable.
>
> So the above recipe works again if you use C-p before `e' so that point
> is now on the top-most line, which stands for "in the context that
> called `debug'".
>
> I think a good fix is to change debug.el so that point starts on the
> first line of the *Debugger* buffer rather than on the second.
In your judgment, can both the old `e' behavior and the new `e' behavior
be useful, at least for dynamically bound variables?
If so, perhaps consider having two different keys, for the two different
behaviors.
bug#15101: 24.3.50; debugger-eval-expression broken, Stefan Monnier, 2013/08/15