Subject: bug#59213: Emacs 29: Edebug fails to instrument a parameter whose name begins with _

From: Eli Zaretskii <[email-masked]>
Date: Tue, 15 Nov 2022 15:08:33 +0200

> Cc: [email-masked]
> Date: Sun, 13 Nov 2022 22:53:12 -0500
> From:  Stefan Monnier via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <[email-masked]>
> 
> > In Emacs 29 (not started with -Q, but...),
> >
> > I instrumented for edebug a function which looked like:
> >
> >     (defun c-trim-found-types (beg end _old-len) ....)
> >
> > , the compilation being with lexical-binding: t.
> >
> > During the edebug session, I attempted
> >
> >     e _old-len RET.
> 
> The behavior depends on where you are in the *Backtrace* buffer, because
> each line in the backtrace can be in a different lexical scope.
> So please clarify on which line you were when you did the above.
> 
> > Instead of giving me the value of _old-len (which was 3) it gave the
> > error message
> >
> >     Error: Symbol's value as variable is void: _old-len
> >
> > ..  This is a bug.
> 
> Could be.  Or could be that you were trying to use `_old-len` in
> a lexical context where there is no such variable.

Could you please document this in the "Edebug Eval" node of the ELisp
reference manual?  I don't think the text there has any hints about
this subtle aspect.  It should also be mentioned in "Backtraces" and
in "Debugger Commands" (the latter says something vague about this,
but it's too vague, IMO).

TIA