Subject: Re: bug#64272: 28.1; lisp_file_lexically_bound_p behavior mismatches file local variables

From: Eli Zaretskii <[email-masked]>
Date: Mon, 26 Jun 2023 14:13:36 +0300

> Date: Sun, 25 Jun 2023 19:53:09 -0500
> From: LdBeth <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,
> 	LdBeth <[email-masked]>,
> 	[email-masked]
> 
> >>>>> In <[email-masked]> 
> >>>>>	Stefan Monnier <[email-masked]> wrote:
> > So maybe we should export `lisp_file_lexically_bound_p` to
> > ELisp, let the byte-compiler (and maybe also
> > `emacs-lisp-mode`) verify that it gives the same answer as
> > `hack-local-variables-prop-line`, and emit a loud warning if
> > it doesn't.
> 
> I think it is a good idea to have byte-compiler check that.
> 
> The context of how this bug reveal is a newbie user
> asked why the lexical-binding does not apply in the .emacs
> file and turns out there is a leading space in the first
> line of the .emacs (well to be honest only scheme people
> does wired things with letrec in their .emacs file)
> 
> In the context of sharing .emacs files, the files are not likely to be
> compiled, so it is better also to check that in emacs-lisp-mode, like,
> when the file is opened.

I'm sorry to bust this particular wedding, but here we see once again
what became a frequent pattern in Emacs: a tiny problem, perhaps
affecting one or a few users who happen to bump into it the first time
they try something, which then causes quite serious changes to
low-level infrastructure in Emacs that has been working flawlessly for
years, and by doing that destabilize Emacs for no good reason.  IOW, a
tail that wags the dog.

Happens time and again in Emacs, and we all fail to pay attention.

The right solution to such problems is for users to learn not to do
that.  Which they already did learn, the first time the bumped into
this.  So the problem, such as it is, is already solved, and we still
contemplate it.

That said, I know I will be downvoted, and so will not object any
changes in this wrong direction.  Let the resultant breakage speak for
itself.