[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#66750: Unhelpful text in C-h v for variables with a lambda form as v
From: |
Stefan Monnier |
Subject: |
bug#66750: Unhelpful text in C-h v for variables with a lambda form as value |
Date: |
Sun, 29 Oct 2023 00:14:24 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
>> > There are lots of detailed changes in eval.c and bytecomp.el (and
>> > friends). Also the macro `lambda' in subr.el has been amended to insert
>> > the current global defining-symbol if there isn't already a non-nil
>> > symbol in that position.
>> So the source code can manually provide this extra symbol in `lambda`?
>> Where have you found that useful?
> The first few functions in debug-early.el and byte-run.el, for a start.
> There, there is not yet a defmacro macro. Also in
> comp-trampoline-compile, where there doesn't seem to be any other way to
> get the name of the primitive into the defining symbol. I think there'll
> be quite a few other places, too.
Hmm... it seems like keeping the LINE+COL info rather than
a surrounding definition would be better in this regard since it wouldn't
require any changes at all to the actual lambdas, regardless where
they are.
>> Hmm... as a user, rather than the enclosing definition I think I'd
>> expect to get some kind of source information like FILE+LINE+COL.
> Possibly: either is a good deal better than what we have at the moment.
The notion of "surrounding definition" is less precise (there can be
several lambdas inside a given definition, there can be lambdas outside
of any definition, ...).
Furthermore, that info is already available to the bytecompiler, so it's
actually easier to keep that info.
>> Actually, the bytecode functions can already keep the FILE info (in
>> the form of the (FILE . OFFSET) cons cell in the docstring slot of the
>> bytecode object), we just opt never to expose that FILE info to the user
>> (we only use it to fetch the actual docstring).
> That's the offset in the .elc file, though, not the source.
Yup. [ Tho now that you make me think about it, if we want to be cheap,
we could go to that OFFSET position and look around for a `^(defalias`
and that might be sufficient to give us "the surrounding definition" in
many cases :-) ]
>> [ Tho, admittedly, it's also that the byte-compiler only uses such
>> (FILE . OFFSET) for named functions, but it wouldn't be hard to change. ]
>> As for how/where to store the LINE+COL, I guess (aref form 5) is still
>> an option, although, maybe we should store that info alongside the
>> docstring, like we already do for the arglist.
> Well, the doc string is at (aref form 4). :-)
What I meant is that the docstring is in the `.elc` file. So the
bytecode object would be literally unchanged, it's just that the
bytes found at OFFSET inside FILE would be extended to hold:
- the docstring
- the human-readable arglist
- the LINE+COL info
Stefan
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, (continued)
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Stefan Monnier, 2023/10/28
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Alan Mackenzie, 2023/10/28
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Eli Zaretskii, 2023/10/28
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Alan Mackenzie, 2023/10/28
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Stefan Monnier, 2023/10/28
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Alan Mackenzie, 2023/10/28
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value,
Stefan Monnier <=
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Alan Mackenzie, 2023/10/29
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Stefan Monnier, 2023/10/29
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Alan Mackenzie, 2023/10/29
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Stefan Monnier, 2023/10/29
- bug#66750: Unhelpful text in C-h v for variables with a lambda form as value, Alan Mackenzie, 2023/10/30