Elisp
Elisp is the programming language used to program and configure Emacs.
History
Elisp, short for Emacs Lisp, is a dialect of the Lisp programming language specifically designed for the Emacs text editor. Its development is closely tied to the history of Emacs itself, beginning in the mid-1970s when Richard Stallman and others at MIT’s AI Lab were developing the first Emacs system.
The original Emacs was built on top of TECO (Text Editor and Corrector), an older line editor that used a command language for text manipulation. As Emacs evolved from a set of TECO macros into a full-featured text editor, the need arose for a more powerful and flexible extension language. This led to the development of Elisp, which was designed to provide the extensibility that would become one of Emacs’ defining characteristics.
Elisp was heavily influenced by Maclisp (Monnier and Sperber 2020), a dialect of Lisp that was popular at MIT during the 1970s and 1980s. It inherited many of Lisp’s fundamental features - such as dynamic typing, garbage collection, and the ability to treat code as data - while being specifically tailored for text editing tasks. The language was designed to be both powerful enough for complex programming tasks and simple enough for casual customization.
Over the decades, Elisp has evolved significantly. Early versions were quite basic, but as Emacs grew in capabilities, so did Elisp. The language gained features like lexical scoping (in addition to dynamic scoping), better error handling, and improved performance. Modern Elisp supports object-oriented programming through the Common Lisp Object System (CLOS), has sophisticated package management, and can even compile to native code for better performance.
Today, Elisp remains the heart of Emacs’ extensibility, with over 10,000 built-in commands and countless user-contributed packages written in the language. It continues to be actively developed and is one of the most mature and well-documented extension languages in the software world.
Some Elisp topics: