The histories of the Emacs text editor and the Lisp programming language are intertwined: most versions of Emacs have used some dialect of Lisp as an extension language, and several versions (starting with Dan Weinreb's EINE for the Lisp Machine; also ZWEI by Dan Weinreb and Mike McMahon and Multics Emacs by Bernie Greenberg) have been implemented in Lisp.
- Bernard S. Greenberg. Multics Emacs (Prose and Cons): A commercial text-processing system in Lisp. Proceedings of the 1980 ACM conference on LISP and functional programming, Stanford University, California, pages 6-12. ACM DL
- Richard M. Stallman. EMACS: The Extensible, Customizable,
Self-Documenting Display Editor. Proceedings of the ACM SIGPLAN SIGOA
Symposium on Text Manipulation, Portland, Oregon, June 1981, pages
147-156. ACM DL
- Richard M. Stallman. My Lisp Experiences and the Development of GNU Emacs. Transcript of talk given at International Lisp Conference, San Francisco, October 28, 2002. HTML at www.gnu.org
- Bernard S. Greenberg. Multics Emacs: The History, Design and Implementation. Originally written 1979; revised April 8, 1996. http://www.multicians.org/mepap.html
- Jamie Zawinski. Emacs Timeline. Written March 8, 1999; updated February 12, 2004. online at www.jwz.org
- John R. Ellis. 1980. A LISP Shell. SIGPLAN Notices, Volume 15, Issue 5 (May 1980), pages 24-34. ACM Digital Library
"Instead of taking a shell command language and imposing a programming language on top of it [e.g., the UNIX Bourne shell], why not do it the other way around? Take a programming language and imbed in it a shell command language. That's the aim of this work." It was implemented on Harvard PDP-11 LISP.
- John Ellis. Tinylisp Reference Manual. Systems Research Center, Digital Equipment Corporation, January 26, 1989. PDF
"Tinylisp is a language intended for 'programming-in-the-small' in SRC's Modula-2+ environment. It is a lexically scoped Lisp implemented as a package that can be bound into any Modula-2+ application, providing that application with instant programmability. The Ivy text editor uses Tinylisp to implement its predefined commands and to allow users to write their own commands; future applications may include a shell based on 'vbtkit' dialogs.
The Tinylisp language itself is a small, modern Lisp that provides a fairly rich set of traditional control and data structures (including threads), with two-level naming based on modules. All the basic Modula-2+ packages are directly accessible from Tinylisp, including Text, List, Table, Thread, FileStream, Rd, Wr, OS, Time, Math, and RegExpr.
Tinylisp can directly manipulate integers, characters, booleans, longreals, and any opaque-ref types provided by the particular application, and Tinylisp can call procedures that traffic in these types. Using compile_tli a stub generator similar to RPC's flume, application implementers define which of the application's procedures and datatypes will be accessible from Tinylisp. It is the responsibility of the application implementer to define Modula-2+ interfaces that are suitable for programming-in-the-small."
- Paul Rovner, Roy Levin, and John Wick. On Extending Modula-2 for Buildign Large, Integrated Systems. Research Report 3, Systems Research Center, Digital Equipment Corporation, January 1985. Online at hpl.hp.com
- Paul Rovner. Extending Modula-2 to Build Large, Integrated Systems. IEEE Software, Volume 3, Issue 6 (November 1986), pages 46-57. IEEE Xplore