[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#30078: 27.0.50; Use lexical-binding for M-:
From: |
Luis Gerhorst |
Subject: |
bug#30078: 27.0.50; Use lexical-binding for M-: |
Date: |
Sat, 13 Jan 2018 18:50:36 +0100 |
> On 12. Jan 2018, at 22:11, Michael Heerdegen <michael_heerdegen@web.de> wrote:
>
> Ah, so you doubt that lexical-binding once should just be the default.
> Then I think we should discuss about this goal.
Here are a few possible pros of lexical binding:
1) Make Elisp more approachable to newcomers. Lexical binding is the default in
most programming languages and thus more people are familiar with it. This
makes it easier for people to understand existing code since they don‘t have to
get used to implicit dynamic binding first, which the code may take advantage
of.
2) Make existing code more maintainable. I was involved in porting the package
emacs-eclim to lexical binding. The process shed light on some very dark parts
of the codebase nobody had touched in a while since they were written in very
bad style and thus hard to understand. Using lexical binding forced us to
simplify those parts.
3) This is a minor one: I‘ve heard that lexical binding allows for more
optimizations. I don‘t know to which extend this actually happens and whether
it is noticeable to the user.
I believe 1) and 2) will significantly help improving the general quality of
Elisp code and thus of Emacs in general.
Here‘s the big con:
If lexical binding should become the default one day, you would have to give
everyone a reasonable amount of time (multiple years?) to adapt for it and port
their code or set lexical binding to nil in their files.
One idea would be to make elisp-mode somehow encourage users to enable lexical
binding in the files they are editing. Any ideas how this can be done without
annoying users? Ideas:
- Prompting every time elisp-mode is enabled in a file that does not have a
lexical binding header.
- I know that certain functions insert a apropriate copyright notice into
el-files, do / can those also set lexical binding to t?
Best regards,
Luis
- bug#30078: 27.0.50; Use lexical-binding for M-:, (continued)
- bug#30078: 27.0.50; Use lexical-binding for M-:, Stefan Monnier, 2018/01/13
- bug#30078: 27.0.50; Use lexical-binding for M-:, Eli Zaretskii, 2018/01/12
- bug#30078: 27.0.50; Use lexical-binding for M-:, Stefan Monnier, 2018/01/12
- bug#30078: 27.0.50; Use lexical-binding for M-:, Eli Zaretskii, 2018/01/12
- bug#30078: 27.0.50; Use lexical-binding for M-:, Stefan Monnier, 2018/01/12
- bug#30078: 27.0.50; Use lexical-binding for M-:, Eli Zaretskii, 2018/01/12
- bug#30078: 27.0.50; Use lexical-binding for M-:, Noam Postavsky, 2018/01/12
- bug#30078: 27.0.50; Use lexical-binding for M-:, Michael Heerdegen, 2018/01/12
- bug#30078: 27.0.50; Use lexical-binding for M-:, Eli Zaretskii, 2018/01/12
- bug#30078: 27.0.50; Use lexical-binding for M-:, Michael Heerdegen, 2018/01/12
- bug#30078: 27.0.50; Use lexical-binding for M-:,
Luis Gerhorst <=
- bug#30078: 27.0.50; Use lexical-binding for M-:, Eli Zaretskii, 2018/01/13
- bug#30078: 27.0.50; Use lexical-binding for M-:, Luis Gerhorst, 2018/01/13
- bug#30078: 27.0.50; Use lexical-binding for M-:, Robert Cochran, 2018/01/14
- bug#30078: 27.0.50; Use lexical-binding for M-:, Stefan Monnier, 2018/01/13
- bug#30078: 27.0.50; Use lexical-binding for M-:, Eli Zaretskii, 2018/01/13
- bug#30078: 27.0.50; Use lexical-binding for M-:, Stefan Monnier, 2018/01/13
- bug#30078: 27.0.50; Use lexical-binding for M-:, Richard Stallman, 2018/01/13
- bug#30078: 27.0.50; Use lexical-binding for M-:, Drew Adams, 2018/01/13
- bug#30078: 27.0.50; Use lexical-binding for M-:, Richard Stallman, 2018/01/14
- bug#30078: 27.0.50; Use lexical-binding for M-:, Stefan Monnier, 2018/01/13