From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Jim Porter <jporterbugs@gmail.com>
Cc: Eli Zaretskii <eliz@gnu.org>, rms@gnu.org, emacs-devel@gnu.org
Subject: Re: Default lexical-binding to t
Date: Wed, 06 Nov 2024 14:26:56 -0500 [thread overview]
Message-ID: <jwvwmhgtb8t.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <e72857d1-8bb8-59b1-7e80-62ab7800b8c3@gmail.com> (Jim Porter's message of "Wed, 6 Nov 2024 09:54:06 -0800")
>>> What bothers me is how do I know whether a given Lisp file of mine
>>> will have problems under lexical-binding. Do we have any tools which
>>> will help me determine that?
>> It's generally impossible to do that reliably (it can be reduced to
>> a variant of the halting problem), but the problem is exactly the same
>> as that of converting from dynbind to lexbind (which we do describe in
>> the manual).
> How about a less-reliable tool that catches some easy-to-detect problems?
> For example, look in every defun and see if the macro-expanded form of the
> function body refers to a variable that is neither 1) declared with 'defvar'
> or 2) let-bound in that function. This logic might not be exactly what we
> want since I haven't thought very long about it, but something along these
> lines could hopefully catch many errors.
That's what the compiler's warnings give you (plus a few related cases
such as the vars that are let-bound but not used within that let's
lexical scope).
Stefan
next prev parent reply other threads:[~2024-11-06 19:26 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-01 12:55 Default lexical-binding to t Stefan Monnier
2024-11-01 14:42 ` Gerd Möllmann
2024-11-01 17:03 ` Karl Fogel
2024-11-02 10:48 ` Visuwesh
2024-11-02 12:08 ` Eli Zaretskii
2024-11-02 13:21 ` Visuwesh
2024-11-02 16:24 ` Stefan Monnier
2024-11-02 20:42 ` Jim Porter
2024-11-02 21:38 ` Stefan Kangas
2024-11-03 2:32 ` Stefan Kangas
2024-11-03 13:58 ` Stefan Monnier
2024-11-03 14:34 ` Stefan Kangas
2024-11-04 8:35 ` Jean Louis
2024-11-04 8:43 ` tomas
2024-11-03 1:46 ` Stefan Monnier
2024-11-03 2:30 ` Stefan Kangas
2024-11-03 7:47 ` Jim Porter
2024-11-03 13:53 ` Stefan Monnier
2024-11-03 6:44 ` Sean Whitton
2024-11-03 14:59 ` lexical-binding in paredit Stefan Monnier
2024-11-03 18:32 ` Stefan Kangas
2024-11-03 21:44 ` Taylor R Campbell
2024-11-04 1:54 ` Stefan Monnier
2024-11-03 15:26 ` Default lexical-binding to t Andrea Corallo
2024-11-07 3:46 ` Richard Stallman
2024-11-07 23:00 ` Andrea Corallo
2024-11-08 15:53 ` Sebastián Monía
2024-11-08 16:23 ` Eli Zaretskii
2024-11-08 17:28 ` Sebastián Monía
2024-11-08 17:37 ` Joost Kremers
2024-11-08 18:51 ` Eli Zaretskii
2024-11-08 20:18 ` Sebastián Monía
2024-11-08 20:57 ` [External] : " Drew Adams
2024-11-11 5:13 ` Richard Stallman
2024-11-04 5:34 ` Richard Stallman
2024-11-04 9:39 ` Po Lu
2024-11-04 13:19 ` Eli Zaretskii
2024-11-04 17:06 ` Alfred M. Szmidt
2024-11-04 18:24 ` [External] : " Drew Adams
2024-11-06 4:44 ` Richard Stallman
2024-11-07 23:07 ` Andrea Corallo
2024-11-04 12:51 ` Eli Zaretskii
2024-11-05 20:24 ` Stefan Monnier
2024-11-06 12:11 ` Eli Zaretskii
2024-11-06 12:50 ` Stefan Monnier
2024-11-06 13:36 ` Eli Zaretskii
2024-11-06 16:32 ` Stefan Monnier
2024-11-06 17:20 ` Eli Zaretskii
2024-11-06 17:42 ` Alan Mackenzie
2024-11-06 20:48 ` Joost Kremers
2024-11-06 22:50 ` Alan Mackenzie
2024-11-07 0:46 ` Stefan Kangas
2024-11-07 21:03 ` Alan Mackenzie
2024-11-08 0:44 ` Stefan Kangas
2024-11-10 4:04 ` Richard Stallman
2024-11-07 6:14 ` Eli Zaretskii
2024-11-07 8:07 ` Joost Kremers
2024-11-07 8:45 ` Eli Zaretskii
2024-11-07 11:09 ` tomas
2024-11-07 21:23 ` Alan Mackenzie
2024-11-07 22:37 ` Dmitry Gutov
2024-11-08 6:58 ` Eli Zaretskii
2024-11-08 14:01 ` Alan Mackenzie
2024-11-08 15:19 ` Eli Zaretskii
2024-11-08 19:07 ` Alan Mackenzie
2024-11-08 20:01 ` Stefan Monnier
2024-11-07 22:10 ` Andrea Corallo
2024-11-08 18:38 ` Stefan Monnier
2024-11-07 2:55 ` Sean Whitton
2024-11-06 17:54 ` Jim Porter
2024-11-06 19:26 ` Stefan Monnier [this message]
2024-11-06 20:23 ` John Yates
2024-11-08 18:43 ` Stefan Monnier
2024-11-06 19:53 ` Jose A. Ortega Ruiz
2024-11-08 18:42 ` Stefan Monnier
2024-11-07 3:46 ` Richard Stallman
2024-11-07 7:09 ` Eli Zaretskii
2024-11-07 3:46 ` Richard Stallman
-- strict thread matches above, loose matches on Subject: below --
2024-11-07 22:28 Christopher Howard
2024-11-08 0:38 ` Stefan Kangas
2024-11-08 6:29 ` tomas
2024-11-10 4:04 ` Richard Stallman
2024-11-08 7:27 ` Eli Zaretskii
2024-11-08 12:11 ` Stefan Kangas
2024-11-08 13:12 ` Suhail Singh
2024-11-08 13:24 ` Stefan Kangas
2024-11-08 13:45 ` Eli Zaretskii
2024-11-08 7:01 ` Eli Zaretskii
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=jwvwmhgtb8t.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=jporterbugs@gmail.com \
--cc=rms@gnu.org \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.