Skip to content
Back to the collection

Evolution of Emacs Lisp

Stefan Monnier, Michael Sperber

2020 · Proceedings of the ACM on Programming Languages

Read the paper
HN score
0
Mentions
5
Readers
4
Months
5
What’s in a score?

From the abstract

While Emacs proponents largely agree that it is the world’s greatest text editor, it is almost as much a Lisp machine disguised as an editor. Indeed, one of its chief appeals is that it is programmable via its own programming language. Emacs Lisp is a Lisp in the classic tradition. In this article, we present the history of this language over its more than 30 years of evolution. Its core has remained remarkably stable since its inception in 1985, in large part to preserve compatibility with the many third-party packages providing a multitude of extensions. Still, Emacs Lisp has evolved and continues to do so. Important aspects of Emacs Lisp have been shaped by concrete requirements of the editor it supports as well as implementation constraints. These requirements led to the choice of a Lisp dialect as Emacs’s language in the first place, specifically its simplicity and dynamic nature: Loading additional Emacs packages or changing the ones in place occurs frequently, and having to restart the editor in order to re-compile or re-link the code would be unacceptable. Fulfilling this requirement in a more static language would have been difficult at best. One of Lisp’s chief characteristics is its malleability through its uniform syntax and the use of macros. This has allowed the language to evolve much more rapidly and substantively than the evolution of its core would suggest, by letting Emacs packages provide new surface syntax alongside new functions. In particular, Emacs Lisp can be customized to look much like Common Lisp, and additional packages provide multiple-dispatch object systems, legible regular expressions, programmable pattern-matching constructs, generalized variables, and more. Still, the core has also evolved, albeit slowly. Most notably, it acquired support for lexical scoping. The timeline of Emacs Lisp development is closely tied to the projects and people who have shaped it over the years: We document Emacs Lisp history through its predecessors, Mocklisp and MacLisp, its early development up to the “Emacs schism” and the fork of Lucid Emacs, the development of XEmacs, and the subsequent rennaissance of Emacs development.

Metadata: Crossref. Abstracts retain their original authors’ rights.

In the conversation

Original HN comments, with labels from simple text rules. A label describes the whole comment and may miss context or irony. Read the discussion to make up your own mind. About the labels

5 selected excerpts · 5 total mentions

spit2wind
Neutral mention · rule
Open Emacs and press <return> to read the tutorial. This gives you the basics to be productive. Understandably, some people complain that it shouldn't need a tutorial or the defaults are bad. There's validity to that angle. There's also validity to Emacs pre-dating GUIs, the IBM keyboard, and the x86 instruction set. Once you get past the history of windows and killing, you can explore. The history is also super interesting! https://www.emacswiki.org/emacs?EmacsHistory https://dl.acm.org/doi/abs/10.1145/3386324 After you've read the tutorial, go wild. Try stuff out. Break things. Fix them. Learn your limits. Learn that there are very few limits imposed by Emacs…
Read the full comment
itself. Hands down, the best resource for Emacs is Emacs itself. Especially, the Emacs manual and the Elisp manual. The "An Introduction to Programming in Emacs Lisp" is also excellent if you're not familiar with Lisp. Learn to read Info files and learn the help system (basically C-h f and C-h v) https://www.gnu.org/software/emacs/manual/ Emacs really is a flagship of Freedom, with all its pain and glory. It lets you exist at the threshold of your zone of proximal development. Every bit you put into Emacs, you get a return on investment. Welcome to the Emacs community! It's full of weirdos and wizards, as well as regular folk. Stick around and I'm sure you'll make friends in no time.
kragen
Neutral mention · rule
this only partially addresses your complaint, but you may or may not be aware that markdown has an option to put urls in footnotes, which you can put anywhere in the file: (This is part of the background work for [Monnier’s paper with him about Elisp’s history][3] for HOPL ’20.) ... [3]: https://dl.acm.org/doi/pdf/10.1145/3386324 (Evolution of Emacs Lisp, by Stefan Monnier and Michael Sperber) in my .emacs.d/init.el i wrote a command https://github.com/kragen/kragen-.emacs.d/blob/master/init.e... which inserts such a footnote link, linking the previous word to the link pasted from the clipboard. it auto-increments the footnote counter, initially setting it higher than…
Read the full comment
any numbered footnote it finds in the file. i have it bound to the fairly horrible key ctrl-alt-]; successive presses of the key expand the link leftwards to include more words (it ought to use the selection as the link text if there is one, and to find an existing block of footnotes to add the footnote to if there is one, but i haven't implemented those features) the upshot of this is that in the above, after typing 'history', i pressed ctrl-alt-] and kept pressing ] until the link had engulfed monnier's name emacs markdown-mode does also automatically syntax-highlight links, headers, bulleted lists, italic, bold, typewriter code, and markdown linebreaks, and it has a command (the also rather horrible keybinding ctrl-c ctrl-o) to open a link. if the link is to a local file, it opens it in emacs rather than your browser. it also uses the tab key to expand and collapse headers, and of course it always has emacs's instantaneous full-text search. but the formatting is much uglier than obsidian's
spit2wind
Neutral mention · rule
I second Emacs Lisp. Call `emacs -Q` (to open it without an init) and press enter. Emacs should have started with the default splash screen open and the cursor over the link to the tutorial. Read the tutorial and understand the basics of Emacs. Next, read An Introduction to Programming in Emacs Lisp. It's a lovely book and fun to read: https://www.gnu.org/software/emacs/manual/html_node/eintr/in... Learn to read and work with Lisp by reading the Emacs source code and playing with it. Check out the Evolution of Emacs Lisp. It's a neat little Lisp! https://dl.acm.org/doi/10.1145/3386324 Emacs has the best documentation and documentation system ever made. Learn C-h f, C-h v, and friends, as well as the info system and the power of indexes. I hope you find joy and wonder exploring Emacs and Emacs Lisp like so many others have for nearly 40 years!

Keep following the thread.

More in Programming languages

More from the same topics.