This article is about the class of text editors. For the most popular, current implementation, seeGNU Emacs.
Multics Emacs is an example of early Emacs implementations
Emacs (/ˈiːmæks/ⓘ), originally namedEMACS (an acronym for "Editor Macros"),[1][2][3] is a family oftext editors that are characterized by theirextensibility.[4] The manual for the most widely used variant,[5]GNU Emacs, describes it as "the extensible, customizable, self-documenting, real-time display editor".[6] Development of the first Emacs began in the mid-1970s,[7][8] and work on GNU Emacs, directly descended from the original, is ongoing; its latest version is 30.2[9], released 14 August 2025.
The most popular, and most ported, version of Emacs is GNU Emacs, which was created byRichard Stallman for theGNU Project.[17]XEmacs is a variant thatbranched from GNU Emacs in 1991. GNU Emacs and XEmacs use similar Lisp dialects and are, for the most part, compatible with each other. XEmacs development is currently very slow.
Emacs was started byGuy L. Steele Jr. as a project to unify the many divergentTECO command sets and key bindings atMIT.[2]David A. MoonEmacs' interface was influenced by the design of thespace-cadet keyboard, which sought to enable users to type as many different kinds of input as possible.[19]
Emacs development began during the 1970s at theMIT AI Lab, whosePDP-6 andPDP-10 computers used theIncompatible Timesharing System (ITS)operating system that featured a defaultline editor known asText Editor and Corrector (TECO). Unlike most modern text editors, TECO used separate modes in which the user would either add text, edit existing text, or display the document. One could not place characters directly into a document by typing them into TECO, but would instead enter a character ('i') in the TECO command language telling it to switch to input mode, enter the required characters, during which time the edited text was not displayed on the screen, and finally enter a character (<esc>) to switch the editor back to command mode. (A similar technique was used to allow overtyping.) This behavior is similar to that of the programed.
By the 1970s, TECO was already an old program, initially released in 1962.Richard Stallman visited theStanford AI Lab in 1976[20] and saw the lab'sE editor, written by Fred Wright.[21] He was impressed by the editor's intuitiveWYSIWYG (What You See Is What You Get) behavior, which has since become the default behavior of most modern text editors. He returned to MIT where Carl Mikkelsen, ahacker at the AI Lab, had added to TECO a combined display/editing mode calledControl-R that allowed the screen display to be updated each time the user entered a keystroke. Stallman reimplemented this mode to run efficiently and then added amacro feature to the TECO display-editing mode that allowed the user to redefine any keystroke to run a TECO program.[3]
E had another feature that TECO lacked: random-access editing. TECO was a page-sequential editor that was designed for editingpaper tape on thePDP-1 at a time when computer memory was generally small due to cost, and it was a feature of TECO that allowed editing on only one page at a time sequentially in the order of the pages in the file. Instead of adopting E's approach of structuring the file for page-random access on disk, Stallman modified TECO to handle large buffers more efficiently and changed its file-management method to read, edit, and write the entire file as a single buffer. Almost all modern editors use this approach.
The new version of TECO quickly became popular at the AI Lab and soon accumulated a large collection of custom macros whose names often ended inMAC orMACS, which stood formacro. Two years later,Guy Steele took on the project of unifying the diverse macros into a single set.[22] Steele and Stallman's finished implementation included facilities for extending and documenting the new macro set.[3] The resulting system was called EMACS, which stood forEditing MACroS or, alternatively,E with MACroS. Later, the use of EMACS as a recursive acronym forEMACS Makes All Computing Simple became popular; this fit in with the growing use of recursive acronyms for other versions of EMACS. (See below.) Stallman picked the name Emacs "because <E> was not in use as an abbreviation on ITS at the time."[23] Anapocryphalhacker koan alleges that the program was named afterEmack & Bolio's, a popularBoston ice cream store.[24] The first operational EMACS system existed in late 1976.[25]
Stallman saw a problem in too much customization andde facto forking and set certain conditions for usage.[citation needed] He later wrote:[25]
EMACS was distributed on a basis of communal sharing, which means all improvements must be given back to me to be incorporated and distributed.
The original Emacs ran only on the PDP-10 running ITS. Its behavior was sufficiently different from that of TECO that it could be considered a text editor in its own right, and it quickly became the standard editing program on ITS. Mike McMahonported Emacs from ITS to theTENEX andTOPS-20 operating systems. Other contributors to early versions of Emacs includeKent Pitman,Earl Killian, andEugene Ciccarelli. By 1979, Emacs was the main editor used in MIT's AI lab and its Laboratory for Computer Science.[26]
In the following years, programmers wrote a variety of Emacs-like editors for other computer systems. These includedEINE (EINE Is Not EMACS) andZWEI[27] (ZWEI Was EINE Initially), which were written for theLisp machine by Mike McMahon andDaniel Weinreb, and Sine (Sine Is Not Eine),[28] which was written by Owen Theodore Anderson. Weinreb'sEINE was the first Emacs written in Lisp. In 1978,Bernard Greenberg wroteMultics Emacs almost entirely in Multics Lisp atHoneywell's Cambridge Information Systems Lab. Multics Emacs was later maintained byRichard Soley, who went on to develop the NILE Emacs-like editor for the NIL Project, and by Barry Margolin. Many versions of Emacs, including GNU Emacs, would later adopt Lisp as an extension language.
Early ads forComputer Corporation of America'sCCA EMACS (Steve Zimmerman) appeared in 1984.[29] CCA EMACS was originally based on Warren Montgomery's EMACS, but was gradually rewritten so that by the time of its commercial release in 1983, none of Montgomery's code was present anymore.[30] CCA EMACS was written to emulate the original PDP-10 EMACS (written byRichard Stallman) as closely as possible, while adding many new commands as well. In 1984, in a competition with other versions of Emacs, it won a site license from MIT for their Project Athena.
Richard Stallman began work on GNU Emacs in 1984 to produce afree software alternative to the proprietary Gosling Emacs. GNU Emacs was initially based on Gosling Emacs, but Stallman's replacement of its Mocklisp interpreter with a true Lisp interpreter required that nearly all of its code be rewritten. This became the first program released by the nascent GNU Project. GNU Emacs is written inC and providesEmacs Lisp, also implemented in C, as an extension language. Version 13, the first public release, was made on March 20, 1985. The first widely distributed version of GNU Emacs was version 15.34, released later in 1985. Early versions of GNU Emacs were numbered as1.x.x, with the initial digit denoting the version of the C core. The1 was dropped after version 1.12, as it was thought that the major number would never change, and thus the numbering skipped from1 to13.[31] In September 2014, it was announced on the GNU emacs-devel mailing list that GNU Emacs would adopt a rapid release strategy and version numbers would increment more quickly in the future.[32]
GNU Emacs offered more features than Gosling Emacs, in particular a full-featured Lisp as its extension language, and soon replaced Gosling Emacs as thede facto Unix Emacs editor.Markus Hess exploited a security flaw in GNU Emacs' email subsystem in his 1986 cracking spree in which he gainedsuperuser access to Unix computers.[33]
Most of GNU Emacs functionality is implemented through ascripting language calledEmacs Lisp. Because about 70% of GNU Emacs is written in the Emacs Lisp extension language,[34] one only needs to port the C core which implements the Emacs Lisp interpreter. This makes porting Emacs to a new platform considerably less difficult than porting an equivalent project consisting of native code only.
GNU Emacs development was relatively closed until 1999 and was used as an example of theCathedral development style inThe Cathedral and the Bazaar. The project has since adopted a public development mailing list and anonymousCVS access. Development took place in a single CVS trunk until 2008 and was then switched to the BazaarDVCS. On November 11, 2014, development was moved toGit.[35]
C file in Emacs 27 with the modus-operandi theme
Richard Stallman has remained the principal maintainer of GNU Emacs, but he has stepped back from the role at times. Stefan Monnier and Chong Yidong were maintainers from 2008 to 2015.[36][37] John Wiegley was named maintainer in 2015 after a meeting with Stallman at MIT.[38] Wiegley stepped down in 2018,[39] leaving Eli Zaretskii as lead maintainer. Stefan Kangas was appointed as co-maintainer in 2023,[40] and Andrea Corallo joined Zaretskii and Kangas in 2024.[41]
As of 2025, GNU Emacs has had 1,608 individualcommitters throughout its history.[42]
Lucid Emacs, based on an early alpha version of GNU Emacs 19, was developed beginning in 1991 byJamie Zawinski and others atLucid Inc. One of the best-known early forks infree software development occurred when the codebases of the two Emacs versions diverged and the separate development teams ceased efforts to merge them back into a single program.[43] Lucid Emacs has since been renamedXEmacs. Its development is currently very slow, with the most recent stable version 21.4.22 released in January 2009, and the most recent beta released in June 2025;[44] meanwhile, GNU Emacs has implemented many formerly XEmacs-only features.[45][better source needed]
Aquamacs – based on GNU Emacs (Aquamacs 3.2 is based on GNU Emacs version 24 and Aquamacs 3.3 is based on GNU Emacs version 25) which focuses on integrating with the Apple Macintosh user interface
Meadow – a Japanese version for Microsoft Windows,[46] which ported the Emacs text editor forUNIX-basedoperating systems toMicrosoft Windows with some added functions. The name comes from the phrase "Multilingual enhancement to GNUEmacs withADvantagesOverWindows". Meadow utilizes Netinstaller, similar to the one used forCygwin installation. This allows users to install Meadow in the way the user wanted, making it easier to get started with Meadow.[citation needed]
In the past, projects aimed at producing small versions of Emacs proliferated. GNU Emacs was initially targeted at computers with a 32-bit flat address space and at least 1 MiB of RAM.[47] Such computers were high endworkstations andminicomputers in the 1980s, and this left a need for smaller reimplementations that would run on commonpersonal computer hardware. Today's computers have more than enough power and capacity to eliminate these restrictions, but small clones have more recently been designed to fit on software installation disks or for use on less capable hardware.[48]
Other projects aim to implement Emacs in a different dialect of Lisp or a different programming language altogether. Although not all are still actively maintained, these clones include:
MicroEMACS, which was originally written by Dave Conroy and further developed by Daniel Lawrence and which exists in many variations.
mg, originally called MicroGNUEmacs and, later, mg2a, a public-domain offshoot of MicroEMACS intended to more closely resemble GNU Emacs. Now installed by default onOpenBSD and macOS.
JOVE (Jonathan's Own Version of Emacs), Jonathan Payne's non-programmable Emacs implementation forUNIX-like systems.
MINCE (MINCE Is Not Complete Emacs), a version forCP/M and later DOS, fromMark of the Unicorn. MINCE evolved into Final Word, which eventually became the BorlandSprint word processor.
Perfect Writer, aCP/M implementation derived from MINCE that was included circa 1982 as the default word processor with the very earliest releases of the Kaypro II and Kaypro IV. It was later provided with the Kaypro 10 as an alternative toWordStar.
Freemacs, aDOS version that uses an extension language based on text macro expansion and fits within the original 64KiB flat memory limit.
Epsilon,[49] an Emacs clone by Lugaru Software. Versions for DOS, Windows, Linux, FreeBSD, Mac OS X and OS/2 are bundled in the release. It uses a non-Lisp extension language with C syntax and used a very early concurrent command shell buffer implementation under the single-tasking MS-DOS.
Hemlock, originally written inSpice Lisp, thenCommon Lisp. A part ofCMU Common Lisp. Influenced byZmacs. Later forked by Lucid Common Lisp (as Helix),LispWorks andClozure CL projects. There is also a Portable Hemlock project, which aims to provide a Hemlock, which runs on several Common Lisp implementations.
edwin, an Emacs-like text editor included with MIT/GNU Scheme.
TheCocoa text system uses some of the same terminology and understands many Emacs navigation bindings. This is possible because the native UI uses theCommand key (equivalent to Super) instead of theControl key.[50]
Joe's Own Editor emulates Emacs keybindings when invoked asjmacs.
MATLAB provides Emacs keybindings for its editor.[52]
Multi-Edit provides Emacs keybindings for its editor.
KornShell has an Emacs line editing mode that predates Gnu Readline.[53]
Visual Studio Code has multiple extensions available to emulate Emacs keybindings.
Oracle SQL Developer can save and load alternative keyboard-shortcut layouts. One of the built-in layouts provides Emacs-like keybindings, including using different commands to achieve closer behavior.
GNU Emacs is areal-time display editor, as its edits are displayed onscreen as they occur. This is standard behavior for modern text editors but EMACS was among the earliest to implement this. The alternative is having to issue a distinct command to display text, (e.g. before or after modifying it). This was common in earlier (or merely simpler) line and context editors, such asQED (BTS, CTSS, Multics),ed (Unix), ED (CP/M), andEdlin (DOS).
Almost all of the functionality in Emacs, including basic editing operations such as the insertion of characters into a file, is achieved throughfunctions written in a dialect of theLisp programming language. The dialect used in GNU Emacs is known asEmacs Lisp (Elisp), and was developed expressly to port Emacs toGNU andUnix. The Emacs Lisp layer sits atop a stable core of basic services and platform abstraction written in theC programming language, which enables GNU Emacs to be ported to a wide variety of operating systems and architectures without modifying the implementation semantics of the Lisp system where most of the editor lives. In this Lisp environment,variables andfunctions can be modified with no need to rebuild or restart Emacs, with even newly redefined versions of core editor features being asynchronously compiled and loaded into the live environment to replace existing definitions. Modern GNU Emacs features bothbytecode andnative code compilation for Emacs Lisp.
All configuration is stored in variables, classes, and data structures, and changed by simply updating these live. The use of a Lisp dialect in this case is a key advantage, as Lisp syntax consists of so-calledsymbolic expressions (or sexprs), which can act as both evaluatable code expressions and as adata serialisation format akin to, but simpler and more general than, well known ones such asXML,JSON, andYAML. In this way there is little difference in practice between customising existing features and writing new ones, both of which are accomplished in the same basic way. This is operatively different from most modern extensible editors, for instanceVS Code, in which separate languages are used to implement the interface and features of the editor and to encode its user-defined configuration and options. The goal of Emacs' open design is to transparently expose Emacs' internals to the Emacs user during normal use in the same way that they would be exposed to the Emacs developer working on thegit tree, and to collapse as much as possible of the distinction between using Emacs and programming Emacs, while still providing a stable, practical, and responsive editing environment for novice users.
The main text editingdata structure is thebuffer, a memory region containing data (usually text) with associated attributes. The most important of these are:
Themark: a settable location which, along with the point, enables selection of
Theregion: a conceptually contiguous collection of text to which editing commands will be applied;
The name andinode of the file the buffer isvisiting (if any);
Thedefault directory, where anyOS-level commands will beexecuted from by default;
The buffer'smodes, including amajor mode possibly severalminor modes
Thebuffer encoding, the method by which Emacs represents buffer data to the user;
and a variety ofbuffer local variables and Emacs Lisp state.
Modes, in particular, are an important concept in Emacs, providing a mechanism to disaggregate Emacs' functionality into sets of behaviours and keybinds relevant to specific buffers' data.Major modes provide a general package of functions and commands relevant to a buffer's data and the way users might be interacting with it (e.g. editing source code in a specific language,editing hex, viewing the filesystem, interacting withgit, etc.), andminor modes define subsidiary collections of functionality applicable across many major modes (such asauto-save-mode). Minor modes can be toggled on or off both locally to each buffer as well as globally across all buffers, while major modes can only be toggled per-buffer. Any other data relevant to a buffer but not bundled into a mode can be handled by simplyfocussing that buffer and live modifying the relevant data directly.
Any interaction with the editor (like key presses or clicking a mouse button) is realized by evaluating Emacs Lisp code, typically acommand, which is a function explicitly designed for interactive use. Keys can be arbitrarily redefined and commands can also be accessed by name; some commands evaluate arbitrary Emacs Lisp code provided by the user in various ways (e.g. a family ofeval- functions, operating on thebuffer,region, or individualexpression). Even the simplest user inputs (such aprintable characters) are effectuated as Emacs Lisp functions, such as theself-insert-command, bound by default to most keyboard keys in a typical text editing buffer, mapping the key used to call it into the associatedlocale-defined character.
For example, pressing thef key in a buffer that accepts text input evaluates the code(self-insert-command1?f), which inserts one copy of the character constant?fat point. The1, in this case, is determined by what Emacs terms theuniversal argument: all Emacs command code accepts a numeric value which, in its simplest usage, indicates repetition of an action, but in more complex cases (where repetition doesn't make sense) can yield other behaviours. These arguments may be supplied via command prefixes, such asControl+u7f, or more compactlyMeta+7f, which expands to(self-insert-command7?f). When no prefix is supplied, the universal argument is1: every command implicitly runs once, but may be called multiply, or in a different way, when supplied with such a prefix. Such arguments may also be non-positive where it makes sense for them to be so - it is up to the function accepting the argument to determine, according to its own semantics, what a given number means to it. One common usage is for functions to perform actions in reverse simply by checking thesign of the universal argument, such as a sort command which sorts in obverse by default and in reverse when called with a negative argument, using the absolute value of its argument as the sorting key (e.g.-7 sorting in reverse by column index (or delimiter) 7), or undo/redo, which are simply negatives of each other (traversing forward and backward through a recursive history of diffs by some number of steps at a time).
Because of its relatively large vocabulary of commands, Emacs features a long-establishedcommand language, to concisely express the keystrokes necessary to perform an action. This command language recognises the following shift and modifier keys:Ctrl,Alt,⇧ Shift,Meta,Super, andHyper. Not all of these may be present on an IBM-style keyboard, though they can usually be configured as desired. These are represented in command language as the respective prefices:C-,A-,S-,M-,s-, andH-. Keys whose names are only printable with more than one character are enclosed in angle brackets. Thus, a keyboard shortcut such asCtrl+Alt+⇧ Shift+F9 (check dependent formulas and calculate all cells in all open workbooks inExcel) would be rendered in Emacs command language asC-A-S-<f9>, while an Emacs command likeMeta+sfCtrl+Meta+s (incremental file search by filename-matchingregexp), would be expressed asM-s f C-M-s. Command language is also used to express the actions needed to invoke commands with no assigned shortcut: for example, the commandscratch-buffer (which initialises a buffer in memory for temporary text storage and manipulation), when invoked by the user, will be reported back asM-x scra <return>, with Emacs scanning the namespace of contextually available commands to return the shortest sequence of keystrokes which uniquely lexicate it.
Because Emacs predates modern standard terminology forgraphical user interfaces, it uses somewhat divergent names for familiar interface elements. Buffers, the data that Emacs users interact with, are displayed to the user insidewindows, which aretiled portions of the terminal screen or the GUI window, which Emacs refers to asframes; in modern terminology, an Emacsframe would be a window and an Emacswindow would be a panel or split. Depending on configuration, windows can include their own scroll bars, line numbers, sometimes a 'header line' typically to ease navigation, and amode line at the bottom (usually displaying buffer name, the active modes and point position of the buffer among others). The bottom of every frame is used for output messages (then called 'echo area') and text input for commands (then called 'minibuffer').
In general, Emacs display elements (windows, frames, etc.) do not belong to any specific data or process. Buffers are not associated with windows, and multiple windows can be opened onto the same buffer, for example to track different parts of a long text side-by-side without scrolling back and forth, and multiple buffers can share the same text, for example to take advantage of different major modes in a mixed-language file. Similarly, Emacs instances are not associated with particular frames, and multiple frames can be opened displaying a single running Emacs process, e.g. a frame per screen in amulti-monitor setup, or a terminal frame connected viassh from a remote system and a graphical frame displaying the same Emacs process via the local system's monitor.
Just as buffers don't require windows, running Emacs processes do not require any frames, and one common usage pattern is to deploy Emacs as anediting server: running it as aheadlessdaemon and connecting to it via a frame-spawning client. This server can then be made available in any situation where an editor is required, simply by declaring the client program to be the user'sEDITOR orVISUAL variable. Such a server continues to run in the background, managing any child processes, accumulatingstdin from open pipes, ports, or fifos, performing periodic or pre-programmed actions, and remembering buffer undo history, saved text snippets, command history, and other user state between editing sessions. In this mode of operation, Emacs overlaps the functionality of programs likescreen andtmux.
Because of its separation of display concerns from editing functionality, Emacs can display roughly similarly on any device more complex than adumb terminal, including providing typical graphicalWIMP elements on sufficiently featureful text terminals - though graphical frames are the preferred mode of display, providing a strict superset of the features of text terminal frames.
User actions can be recorded into macros and replayed to automate complex, repetitive tasks. This is often done on an ad-hoc basis, with each macro discarded after use, although macros can be saved and invoked later.
Because of the uniformity of Emacs' features' definition in terms of Emacs Lisp, what counts as a "user action" for the purposes of macro-automation is flexible: macros may include, e.g., keypresses, commands, mouse clicks, other macros, and anything that can be effectuated via these. Macros can thus be recursive, and can be defined and invoked inside of macros.
At startup, Emacs executes an Emacs Lisp script named~/.emacs (recent versions also look for~/emacs.el,~/.emacs.d/init.el, and~/.config/emacs/init.el,[54] as well as similar variations on~/.config/emacs/early-init.el.[55] Emacs readsearly-init.el first if it exists, and it can be used to configure or short-circuit core Emacs features before they load, such as the graphical display system orpackage manager. It will then execute the first version.emacs orinit.el that it finds, ignoring the rest. This personal customization file can be arbitrarily long and complex, but typical content includes:
Setting global variables or invoking functions to customize Emacs behaviour, for example(set-default-coding-systems 'utf-8)
Key bindings to override standard ones and to add shortcuts for commands that the user finds convenient but don't have a key binding by default. Example:(global-set-key(kbd"C-x C-b")'ibuffer)
Loading, enabling and initializing extensions (Emacs comes with many extensions, but only a few are loaded by default.)
Configuringevent hooks to run arbitrary code at specific times, for example to automatically recompile source code after saving a buffer (after-save-hook)
Executing arbitrary files, usually to split an overly long configuration file into manageable and homogeneous parts (~/.emacs.d/ and~/elisp/ are traditional locations for these personal scripts)
Thecustomize extension allows the user to set configuration properties such as the color scheme interactively, from within Emacs, in a more user-friendly way than by setting variables in.emacs: it offers search, descriptions and help text, multiple choice inputs, reverting to defaults, modification of the running Emacs instance without reloading, and other conveniences similar to thepreferences functionality of other programs. The customized values are saved in.emacs (or another designated file) automatically.
Themes, affecting the choice of fonts and colours, are defined as Emacs Lisp files and chosen through the customize extension.
Modes, which support editing a range of programming languages (e.g., emacs-lisp-mode, c-mode, java-mode, ESS for R) by changing fonts to highlight the code and keybindings modified (foreword-function vs. forward-page). Other modes include ones that support editing spreadsheets (dismal) and structured text.
The first Emacs contained ahelp library that included documentation for every command, variable and internal function. Because of this, Emacs proponents described the software asself-documenting in that it presents the user with information on its normal features and its current state. Each function includes a documentation string that is displayed to the user on request, a practice that subsequently spread to programming languages includingLisp,Java,Perl, andPython. This help system can take users to the actual code for each function, whether from a built-in library or an added third-party library.
Emacs also has a built-intutorial. Emacs displays instructions for performing simple editing commands and invoking the tutorial when it is launched with no file to edit. The tutorial is by Stuart Cracraft and Richard Stallman.
TheChurch of Emacs, formed byRichard Stallman, is aparody religion created for Emacs users.[56] While it refers tovi as theeditor of the beast (vi-vi-vi being6-6-6 in Roman numerals), it does not oppose the use of vi; rather, it calls itproprietary softwareanathema. ("Using afree version of vi is not a sin but apenance."[57]) The Church of Emacs has its ownnewsgroup,alt.religion.emacs,[58] that has posts purporting to support this parody religion. Supporters of vi have created an opposingCult of vi.
The church of Emacs has the following hierarchy:[59]
GODS — Creates Free ideas, software and hardware from emptiness and likes to be flattered through prayers.
DEMIGODS — Capable of proving that NP problems and P problems are the same (NP=P), writes free software for to prove it and tries to alleviate the bullying nature of GODS by distributing the ideas of GODS freely. They still insist on flattering GODS through prayers and defends the bullying of GODS.
SAINTS — Writes Free software using Free software tools.
SEMI SAINTS — Use lots ofFree software and believes in the church of EMACS but signed NDAs or agreed to proprietary software licenses.
PROPHETS — selected by ALMIGHTY (One of the GODS) to reveal his thoughts about humanity.
LAITY — does not care about NDAs or proprietary software licenses but runs after BUZZWORDS to show that he is capable of grasping BUZZWORDS.
Sinners — Insist on using devil's software, believing that it is of superior quality.
Devils — Creating NDAs and proprietory [sic] software licenses to entangle humanity in their net.
Stallman has jokingly referred to himself asSt I GNU cius, a saint in the Church of Emacs.[60] This is in reference toIgnatius of Antioch, an early Church father venerated in Christianity.
^"A Tutorial Introduction to GNU Emacs".For an editor to be called "emacs" the main requirement is that it be fully extensible with a real programming language, not just a macro language.
^Richard Stallman is often credited as another co-creator, but asDaniel Weinreb wrote, "The original (TECO-based) Emacs was created and designed by Guy L. Steele Jr. and David Moon. After they had it working, and it had become established as the standard text editor at the AI lab, Stallman took over its maintenance." Moon himself responded "All true, so far as I can remember. But in all fairness I have to say that Stallman greatly improved Emacs after he “liberated” it from Guy and me." SeeWeinreb, Dan (November 11, 2007),"Rebuttal to Stallman's Story About The Formation of Symbolics and LMI",Dan Weinreb's blog: software and innovation, archived from the original on January 1, 2009.
^Reynolds, Craig (1992-02-10). Wiseman, David G. (ed.)."The Emac Bolio Name Koan".David G. Wiseman: Stories of Computer Folklore. Archived fromthe original on January 16, 2003.A cocky novice once said to Stallman: 'I can guess why the editor is called Emacs, but why is the justifier called Bolio?'. Stallman replied forcefully, Names are but names, Emack & Bolio's is the name of a popular ice cream shop in Boston town. Neither of these men had anything to do with the software.' His question answered, yet unanswered, the novice turned to go, but Stallman called to him, 'Neither Emacs nor Bolio had anything to do with the ice cream shop, either.'
^"Comment by ZWEI's author Dan Weinreb".I wrote the second Emacs ever: the Lisp machine implementation, whose spec was "do what Stallman's PDP-10 (original) Emacs does", and then progressed from there. There's just a whole LOT of it. It took me and Mike McMahon endless hours to implement so many commands to make ZWEI/Zmacs.
^"emacs-devel msg 00872 (2014-09-29)".In retrospect 24.3 should have been named 25.1 and 24.4 should have been named 26.1. The.N thingy should really be kept only for bug-fix releases and neither of 24.3, 24.4, nor the previously planned 24.5 are bug-fix releases.
^"My Lisp Experiences and the Development of GNU Emacs".There were people in those days, in 1985, who had one-megabyte machines without virtual memory. They wanted to be able to use GNU Emacs. This meant I had to keep the program as small as possible.
^"GNU Zile (Zile is Lossy Emacs) - Summary".Modern computers have more than enough resources to start and run a full Emacs in a fraction of a second, and Emacs is probably what you want. Zile is a small, fast, and powerful Emacs clone. It is useful for small footprint installations (e.g. on floppy disk), machines with little memory, or quick editing sessions, especially on remote machines or as a different user, e.g. root.
Ciccarelli, Eugene (1978).An Introduction to the Emacs Editor. Cambridge, Massachusetts: MIT Artificial Intelligence Laboratory. AIM-447.PDF
Stallman, Richard M. (1981) [1979].EMACS: The Extensible, Customizable, Self-Documenting Display Editor. Cambridge Massachusetts: MIT Artificial Intelligence Laboratory. AIM-519A.PDFHTML