From: Alan Mackenzie <acm@muc.de>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: acm@muc.de, Eli Zaretskii <eliz@gnu.org>, 67455@debbugs.gnu.org
Subject: bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.)
Date: Sun, 7 Apr 2024 11:35:19 +0000 [thread overview]
Message-ID: <ZhKE92pGS3SG4pNy@ACM> (raw)
In-Reply-To: <jwvv853taqa.fsf-monnier+emacs@gnu.org>
Hello, Stefan.
On Sat, Mar 30, 2024 at 22:22:52 -0400, Stefan Monnier wrote:
> >> We're still miscommunicating. You're talking about how your code is
> >> implemented, apparently, whereas I'm asking about what is the
> >> intended behavior.
> > I am still mystified by your failure to understand "currently being
> > defined", a phrase that to me could hardly be clearer.
> AFAIK, the definition itself happens inside `Fdefalias`. It's a very
> short amount of time during which none of your code is executed, so that
> can't be it.
The definition starts when the reader reads (defun foo ...). It ends
when that Fdefalias has been evaluated. Between those two events,
defining-symbol is bound to foo.
> The rest is the actual construction of the value/function object which
> will make up the definition. This construction is done piecemeal in
> various phases at potentially various different times, not all of them
> necessarily on the same machine.
Really? :-)
> Some of the code executed during the course of the construction of this
> object have nothing at all to do with that object, they just happen to
> be used by some code which participates in the construction of that
> object.
That's a bit too abstract. I can't see the potential problems that you
see, possibly because I've already solved them.
> So "currently" (i.e. referring to *time*) is very problematic because
> it's only loosely correlated to what you're interested in.
Again, I don't see these problems.
> >> It's like I'm asking what the C spec says and you're answering me by
> >> telling me how GCC works.
> > OK, let's try again. defining-symbol records the symbol currently being
> > defined. It's used to set the defining symbol and buffer offset fields
> > in the position structure in that symbol's doc string, and also in the
> > doc strings of contained lambda forms.
> I can try it again also if you want: to do it right, I think you want to
> store that information in `macroexpand-all-environment`.
That variable doesn't exist, yet.
> > Is my previous paragraph sufficiently clear? If so, can you envisage a
> > scenario where a symbol being defined would fail to get the two fields
> > correctly set in its doc string or a lambda form's doc string?
> Yes, for example I can imagine a lazy macroexpansion done to run some
> code during the eager macroexpansion could mistakenly think that it is
> part of the eagerly macroexpanded function (whereas it's only part of
> the code used during the construction of that function).
The critical thing here is the variable defining-symbol. I think you're
suggesting that its value could accidentally find its way into other
symbols' position structures. When are those other symbols getting
defined? Surely if a secondary defun, defmacro, defvar, ... happens
during the main defun, its defining symbol is that of the main defun?
> I'm sure there are other cases, by thinking of it makes my head hurt.
> Which is why I recommend you put that info into
> `macroexpand-all-environment` which is designed specifically for such
> purpose of "currently within the scope of something".
Well, m-a-e is defined too late. Even if it weren't, how would it solve
any of these problems you see? It's just swapping one dynamically bound
variable for another.
> Stefan
--
Alan Mackenzie (Nuremberg, Germany).
next prev parent reply other threads:[~2024-04-07 11:35 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-26 14:30 bug#67455: Record source position, etc., in doc strings, and use this in *Help* and backtraces Alan Mackenzie
2023-12-04 17:36 ` Alan Mackenzie
2023-12-04 18:33 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-04 21:32 ` Alan Mackenzie
2023-12-04 21:56 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-04 22:30 ` Alan Mackenzie
2023-12-04 22:59 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-15 18:23 ` Alan Mackenzie
2023-12-15 23:12 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
[not found] ` <handler.67455.B.170100905232659.ack@debbugs.gnu.org>
2024-03-04 15:38 ` bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.) Alan Mackenzie
2024-03-09 21:36 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-10 16:02 ` Alan Mackenzie
2024-03-10 17:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-10 19:22 ` Alan Mackenzie
2024-03-10 21:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-24 11:04 ` Alan Mackenzie
2024-03-25 18:23 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-25 21:03 ` Alan Mackenzie
2024-03-25 22:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-26 9:48 ` Alan Mackenzie
2024-03-26 13:40 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-26 16:55 ` Alan Mackenzie
2024-03-26 19:40 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-26 20:21 ` Alan Mackenzie
2024-03-26 20:42 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-27 3:35 ` Alan Mackenzie
2024-03-27 12:23 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-27 22:00 ` Alan Mackenzie
2024-03-26 20:30 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-26 21:13 ` Drew Adams
2024-03-27 10:04 ` Alan Mackenzie
2024-03-27 12:22 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-27 21:43 ` Alan Mackenzie
2024-03-28 16:25 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-28 16:48 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-30 9:10 ` Alan Mackenzie
2024-03-30 9:53 ` Alan Mackenzie
2024-03-31 2:22 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-07 11:35 ` Alan Mackenzie [this message]
2024-04-08 2:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-08 2:56 ` Alan Mackenzie
2024-04-10 8:53 ` Alan Mackenzie
2024-03-30 11:03 ` Alan Mackenzie
2024-03-31 2:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-07 10:57 ` Alan Mackenzie
2024-04-08 3:16 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-08 8:32 ` Alan Mackenzie
2024-04-08 12:00 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-02 13:38 ` Alan Mackenzie
2024-06-03 4:52 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-05 15:01 ` Alan Mackenzie
2024-03-10 22:27 ` Alan Mackenzie
2024-03-11 0:50 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-13 10:54 ` Alan Mackenzie
2024-03-13 11:52 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-19 16:18 ` Alan Mackenzie
2024-03-19 20:47 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-19 21:40 ` Alan Mackenzie
2024-03-19 22:32 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-24 11:21 ` Alan Mackenzie
2024-06-01 17:40 ` Alan Mackenzie
2024-06-01 18:01 ` Eli Zaretskii
2024-06-01 18:15 ` Eli Zaretskii
2024-06-01 18:17 ` Alan Mackenzie
2024-06-01 23:14 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZhKE92pGS3SG4pNy@ACM \
--to=acm@muc.de \
--cc=67455@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).