Subject: bug#66706: [PATCH] Automatic elisp dialect insertion

From: Po Lu <[email-masked]>
Date: Wed, 25 Oct 2023 20:48:46 +0800

Stefan Monnier <[email-masked]> writes:

> There's no patronizing, here.  Just experience.  It *is* a source of
> confusion.  I've seen enough such examples during my time in SX where
> people give a valid answer, followed by comments like:
>
>    "doesn't work here" --Mr.Foo
>    "I assumed you have lexical-binding enabled, try enabling it and see
>     if it works" --Mr.Bar

OK, and why is it such a reply does not suffice?  And why would any
measure short of initializing lexical-binding to t eliminate these
people, when so many have failed in the past?

> I don't doubt that our users have the capacity to solve those problems.
> It's just that my sadism is already satisfied by all the other problems
> we foist on them.

Then please inure yourself to such trifling matters of theirs.  Those
who are ignorant of lexical binding will run afoul of it once, learn
their lesson, and from that time forward routinely check whether it is
enabled.

You are not obliged to guarantee that no person stumbles across this
pitfall, and we are long past the juncture after which the law of
diminishing returns begins to assert itself in full force.  Such
"safeguards" as those proposed here will irk the informed and the
ignorant alike, while the latter, which is to say those who elect not to
read the documentation, take notice of the prominently decorated mode
line lighter, or heed advice given to them on forums such as
StackExchange, will continue not to enable lexical binding where it is
due.  As they have always done.

I am not the only person empty of the élan for lexical binding that
serves as the impetus for these increasingly heavy-handed measures,
incidentally.  Eli seems to agree with me.

> I myself get bitten by the different dialects every once in a while,
> sometimes even copying code within Emacs itself (typically taking
> a chunk of code from a buffer and running it inside `M-:` or `M-x
> ielm`).

How will the automatic insertion of lexical binding cookies in new files
affect M-: or IELM, both of which already execute lexically bound code?