'Emacs' is a class of
text editors that have an extensive set of features and that are popular with
computer programmers and other technically proficient computer users.
'GNU Emacs', a part of the
GNU project, is under active development and is the most popular version. The GNU Emacs manual describes it as "the extensible, customizable, self-documenting, real-time display editor." It is also the most portable and ported of the implementations of Emacs. As of 2007, the latest stable release of GNU Emacs is version 22.1.
[1] 'XEmacs' is the other major Emacs.
The original EMACS was a set of 'E'ditor 'MAC'ro'S' for the
TECO editor written in 1975 by
Richard Stallman, initially together with
Guy L. Steele, Jr..
[2] It was inspired by the ideas of TECMAC and TMACS, a pair of TECO-macro editors written by Steele,
Dave Moon,
Richard Greenblatt,
Charles Frankston, and others.
[3] Many versions of Emacs have appeared over the years, but two are now commonly used: GNU Emacs, started by Stallman in 1984 and still maintained by him, and
XEmacs, a
fork of GNU Emacs started in 1991 that has remained mostly compatible. Both use a powerful extension language,
Emacs Lisp, that allows them to handle tasks ranging from
writing and
compiling computer programs to
browsing the web.
In
Unix culture, Emacs is one of the two main contenders in the traditional
editor wars, the other being
vi.
Some people make a distinction between the capitalized word "Emacs", used to refer to editors derived from versions created by Stallman, and the lower-case word "emacs", used to refer to the large number of independent emacs reimplementations. The word "emacs" is often pluralized as 'emacsen', by analogy with (itself used by analogy with ) and
VAXen.
History
Emacs development began at the
MIT AI Lab during the 1970s. Before its introduction, the default editor on the
Incompatible Timesharing System (ITS), the
operating system on the AI Lab's
PDP-6 and
PDP-10 computers, was a
line editor known as
Text Editor and Corrector (TECO). Unlike modern text editors, TECO treated typing, editing, and document display as separate modes. In editor jargon, it was a modal editor. Typing characters into TECO did not place those characters directly into a document; one had to write a series of instructions in the TECO command language telling it to enter the required characters, during which time the edited text was not displayed on the screen. This behavior is similar to the program
ed, which is still in use.
Richard Stallman visited the
Stanford AI Lab in 1972 or 1974 and saw the lab's "E" editor, written by Fred Wright. The editor had an intuitive
WYSIWYG behavior as is used almost universally by modern text editors, which impressed Stallman. He returned to MIT where Carl Mikkelsen, a
hacker at the AI Lab, had added a display-editing mode called "Control-R" to TECO, allowing the screen display to be updated each time the user entered a keystroke. Stallman reimplemented this mode to run efficiently, then added a
macro feature to the TECO display-editing mode, allowing the user to redefine any keystroke to run a TECO program.
Another feature of E which TECO lacked was random-access editing. Since TECO's original implementation was designed for editing paper tape on the
PDP-1, it was a page-sequential editor. Typical editing could only be done on one page at a time, in the order of the pages in the file. To provide random access in Emacs, Stallman decided not to adopt E's approach of structuring the file for page-random access on disk, but instead modified TECO to handle large buffers more efficiently, and then changed its file management philosophy to read, edit, and write the entire file as a single buffer. Almost all modern editors use this approach.
The new version of TECO was instantly popular at the AI Lab, and soon there accumulated a large collection of custom macros, whose names often ended in "MAC" or "MACS", which stood for "macro". Two years later,
Guy Steele took on the project of unifying the overly diverse keyboard command sets into a single set. After one night of joint hacking by Steele and Stallman, the latter finished the implementation, which included facilities for extending and documenting the new macro set. The resulting system was called EMACS, which stood for "Editing MACroS". An alternate version is that EMACS stood for "E with MACroS", a dig at E's lack of a macro capability. According to Stallman, he picked the name Emacs "because
was not in use as an abbreviation on ITS at the time." (It has also been noted that "
Emack & Bolio's" was the name of a popular ice cream store in
Boston, within walking distance of MIT. A text-formatting program used on ITS was later named BOLIO by
Dave Moon, who frequented that store. However, Stallman did not like that ice cream, and did not even know of it when choosing the name "Emacs"; this ignorance is the basis of a
hacker koan,
''Emacs and Bolio'').
Stallman realized the danger of too much customization and de-facto forking and set certain conditions for usage. He later wrote:
:''"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, like TECO, ran only on the PDP line. Its behavior was different enough from TECO to be considered a text editor in its own right. It quickly became the standard editing program on ITS. It was also
ported from ITS to the
Tenex and
TOPS-20 operating systems by Michael McMahon, but not Unix, initially. Other contributors to early versions of Emacs include
Kent Pitman,
Earl Killian, and
Eugene Ciccarelli. By 1979, Emacs was the editor used by most people in MIT's AI lab and its Computer Science lab.
[4]
Other emacsen
Many Emacs-like editors were written in the following years for other computer systems, including SINE (Sine is not EMACS), EINE ("EINE Is Not EMACS") and ZWEI ("ZWEI Was EINE Initially", for the
Lisp machine), which were written by Michael McMahon and Daniel Weinreb. ("Eine" and "zwei" mean "one" and "two" in German, respectively.) In 1978,
Bernard Greenberg wrote
Multics Emacs at
Honeywell's Cambridge Information Systems Lab, which was the first version to fully embrace Lisp as its extension language. Emacs (including GNU Emacs) later adopted Lisp as the editor's extension language.
The first Emacs-like editor to run on
Unix was
Gosling Emacs, written in 1981 by
James Gosling (who later invented
NeWS and the
Java programming language). It was written in
C and, notably, used a language with Lisp-like syntax known as
Mocklisp as an extension language. In 1984 it was
proprietary software.
GNU Emacs
In 1984, Stallman began working on GNU Emacs to produce a
free software alternative to Gosling Emacs; initially it was based on Gosling Emacs, but Stallman replaced the Mocklisp interpreter at its heart with a true Lisp interpreter, which entailed replacing nearly all of the code. It became the first program released by the nascent
GNU project. GNU Emacs is written in C and provides
Emacs Lisp (itself implemented in C) as an extension language. The first widely distributed version of GNU Emacs was 15.34, which appeared in 1985. (Versions 2 to 12 never existed. Earlier versions of GNU Emacs had been numbered "1.x.x", but sometime after version 1.12 the decision was made to drop the "1", as it was thought the major number would never change. Version 13, the first public release, was made on March 20, 1985.)
Like Gosling Emacs, GNU Emacs ran on Unix, but it had more features, in particular a full-featured Lisp as extension language. As a result, it soon replaced Gosling Emacs as the ''de facto'' Emacs editor on Unix.
Until
1999, GNU Emacs development was relatively closed, to the point where it was used as an example of the "Cathedral" development style in ''
The Cathedral and the Bazaar''. The project has since adopted a public development mailing list and anonymous
CVS access. Development takes place in a single CVS trunk, which is at version 22.1.50. The maintainer, as of June 2007, is
Richard Stallman.
XEmacs
Beginning in 1991, Lucid Emacs was developed by
Jamie Zawinski and others at Lucid Inc., based on an early alpha version of GNU Emacs 19. The codebases soon diverged, and the separate development teams gave up trying to merge them back into a single program.
[5] This was one of the most famous early
forks of a
free software program. Lucid Emacs has since been renamed
XEmacs; it remains the second most popular variety of Emacs, after GNU Emacs.
Other implementations
GNU Emacs was initially targeted at computers with a 32-bit flat address space, and at least 1
MiB of RAM, at a time where such computers were considered high end. This left an opening for smaller reimplementations. Some noteworthy ones are listed here:
★
MicroEMACS, a very portable implementation originally written by Dave Conroy and further developed by Daniel Lawrence, which exists in many variations. The editor used by
Linus Torvalds.
[6]
★
MG, originally called MicroGNUEmacs, an offshoot of MicroEMACS intended to more closely resemble GNU Emacs. Now installed by default on
OpenBSD.
★ NotGNU
[7], a small, fast, freeware implementation for DOS, Win16, Win32 and linux by Julie Melbin.
★ JOVE (Jonathan's Own Version of Emacs), a non-programmable Emacs implementation for
UNIX-like systems by Jonathan Payne.
★
Freemacs, a
DOS version with an extension language based on text macro expansion, all within the original 64
KiB flat memory limit.
★
Meadow [8] is an Emacs variant originating from Japan that is designed to operate under Windows. The focus of Meadow is to provide multi-lingual support.
★ MINCE (MINCE Is Not Complete Emacs), a version for CP/M from
Mark of the Unicorn. MINCE evolved into Final Word, which eventually became the
Sprint word processor from Borland.
★ SXEmacs
[9] is a
fork of XEmacs 21.4.16 led by former XEmacs developer Steve Youngs. It aims to integrate Emacs into the X Window system; it includes MP3 player and productivity software.
★
Zile
★
Aquamacs is a modified distribution that has been changed to conform with the UI standards on Macintosh computers.
Licensing
For GNU Emacs (and GNU packages in general), it remains policy to accept significant code contributions only if the
copyright holder executes a suitable disclaimer or assignment of their copyright interest, although one exception was made to this policy for the
MULE (MULtilingual Extension, which handles
Unicode and more advanced methods of dealing with other languages' scripts) code
[1] since the copyright holder is the Japanese government and copyright assignment was not possible. This does not apply to extremely minor code contributions or bug fixes. There is no strict definition of minor, but as a guideline less than 10 lines of code is considered minor. This policy is intended to facilitate
copyleft enforcement, so that the FSF can defend the software in a court case if one arises.
The source code, including both the C and Emacs Lisp components, is freely available for examination, modification, and redistribution, under the terms of the
GNU General Public License (GPL). Older versions of the GNU Emacs documentation were released under an ad-hoc license which required the inclusion of certain text in any modified copy. In the GNU Emacs user's manual, for example, this included how to obtain GNU Emacs and Richard Stallman's political essay ''
The GNU Manifesto''. The XEmacs manuals, which were inherited from older GNU Emacs manuals when the fork occurred, have the same license. Newer versions of the documentation use the
GNU Free Documentation License and makes use of "invariant sections" to require the inclusion of the same documents, additionally requiring that the manuals proclaim themselves as ''GNU Manuals''.
Features
Emacs is primarily a ''text'' editor, not a
word processor; it is geared toward manipulating pieces of text, rather than manipulating the
typeface (the "font") of the characters or printing documents (though Emacs can do these as well). Emacs provides commands to manipulate
words and
paragraphs (deleting them, moving them, moving through them, and so forth),
syntax highlighting for making
source code easier to read, and "keyboard macros" for performing arbitrary batches of editing commands defined by the user.
Almost all of the functionality in the editor, ranging from basic editing operations such as the insertion of characters into a document to the configuration of the user interface, is controlled by a dialect of the
Lisp programming language known as
Emacs Lisp. This unique and unusual design provides many of the features found in Emacs. In this Lisp environment,
variables and even entire
functions can be modified on the fly, without having to recompile or even restart the editor. As a result, the behavior of Emacs can be modified almost without limit, either directly by the user, or by loading bodies of Emacs Lisp code known variously as "libraries", "packages", or "extensions".
Emacs contains a large number of Emacs Lisp libraries, and more "third-party" libraries can be found on the
Internet. Many libraries implement computer programming aids, reflecting Emacs' popularity among programmers. Emacs can be used as an
Integrated Development Environment (IDE), allowing programmers to edit,
compile, and
debug their code within a single interface. Other libraries perform more unusual functions. A few examples are listed below:
★ Calc, a powerful
RPN numerical
calculator
★ Calendar-mode, for keeping appointment calendars and diaries
★ Doctor, an implementation of
ELIZA that performs basic
Rogerian psychotherapy
★
Dunnet, a
text adventure
★
Ediff, for working with
diff files interactively.
★ Emerge, for comparing files and combining them
★
Emacs/W3, a
web browser
★
ERC, an
IRC client
★
Gnus, a full-featured
newsreader and
email client (and early evidence for
Zawinski's Law, along with Rmail and VM)
★
MULE, MultiLingual extensions to Emacs, allowing editing text written in multiple languages, somewhat analogous to
Unicode
★
Info, an online help-browser
★ ''Emacs-wiki'', LISP-based wiki software for Emacs
★
Planner, a
personal information manager for Emacs
★
Tetris
★
Pong
The downside to Emacs' Lisp-based design is a performance overhead resulting from loading and
interpreting the Lisp code. On the systems in which Emacs was first implemented, Emacs was often noticeably slower than rival text editors. Several joke
backronyms allude to this: ''Eight Megabytes And Constantly Swapping'' (from the days when eight
megabytes was a lot of memory), ''Emacs Makes A Computer Slow'', ''Eventually
Mallocs All Computer Storage'', and ''Eventually Makes All Computers Sick''. However, modern computers are fast enough that Emacs is seldom felt to be slow. In fact, Emacs starts up more quickly than most modern word processors. Other joke backronyms describe the user interface: ''Escape Meta Alt Control Shift''.
Platforms
Emacs is one of the most
ported non-trivial computer programs. It runs on a wide variety of
operating systems, including most
Unix-like systems (
GNU/Linux, the various
BSDs,
Solaris,
AIX,
IRIX,
Mac OS X,
[10][11] etc.),
MS-DOS,
Microsoft Windows[12][13][14] and
OpenVMS. Unix systems, both free and proprietary, frequently provide Emacs bundled with the
operating system.
Emacs runs on both
text terminals and
graphical user interface (GUI) environments. On
Unix-like operating systems, Emacs uses the
X Window System to produce its GUI, either directly or using a "widget toolkit" such as
Motif,
LessTif, or
GTK+. Emacs can also use the native graphical systems of Mac OS X (using the
Carbon interface) and
Microsoft Windows. The graphical interface provides
menubars,
toolbars,
scrollbars, and
context menus.
Editing modes
Emacs adapts its behavior to the type of text it is editing by entering editing modes called "major modes". Major modes are defined for ordinary text files,
source code for many
programming languages,
HTML documents,
TeX and
LaTeX documents, and many other types of text. Each major mode tweaks certain Emacs Lisp variables to make Emacs behave more conveniently for the particular type of text. In particular, they usually implement
syntax highlighting, using different fonts or colors to display
keywords,
comments, and so forth. Major modes also provide special editing commands; for example, major modes for programming languages usually define commands to jump to the beginning and the end of a function.
The behavior of Emacs can be further customized using "minor modes". While only one major mode can be associated with a buffer at a time, multiple minor modes can be simultaneously active. For example, the major mode for the C programming language defines a different minor mode for each of the popular
indent styles.
Customization
Emacs can be customized to suit individual needs. There are three primary ways to customize Emacs. The first is the ''customize'' extension, which allows the user to set common customization variables, such as the colour scheme, using a graphical interface, etc. This is intended for Emacs beginners who do not want to work with Emacs Lisp code.
The second is to collect keystrokes into
macros and replay them 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.
The third method for customizing Emacs is using Emacs Lisp. Usually, user-supplied Emacs Lisp code is stored in a file called
.emacs, which is loaded when Emacs starts up. The
.emacs file is often used to set variables and
key bindings different from the default setting, and to define new commands that the user finds convenient. Many advanced users have
.emacs files hundreds of lines long, with idiosyncratic customizations that cause Emacs to diverge wildly from the default behavior.
If a body of Emacs Lisp code is generally useful, it is often packaged as a library and distributed to other users. Many such third-party libraries can be found on the Internet; for example, there is a library called
wikipedia-mode for
editing Wikipedia articles. There is even a
Usenet newsgroup, [news://gnu.emacs.sources gnu.emacs.sources], which is used for posting new libraries. Some third-party libraries eventually make their way into Emacs, thus becoming a "standard" library.
Documentation
The first Emacs included an innovative ''help'' library that can display the documentation for every single command, variable, and internal function. (It may have originated this technique.) Because of this, Emacs was described as "self-documenting". (This term does not mean that Emacs writes its own documentation, but rather that it presents its own documentation to the user.) This feature makes Emacs' documentation very accessible. For example, the user can find out about the command bound to a particular keystroke simply by entering
C-h k (which runs the command
describe-key), followed by the keystroke. Each function included a documentation string, specifically to be used for showing to the
user on request. The practice of giving functions documentation strings subsequently spread to various programming
languages such as
Lisp and
Java.
The Emacs ''help'' system is useful not only for beginners, but also for advanced users writing Emacs Lisp code. If the documentation for a function or variable is not enough, the ''help'' system can be used to browse the Emacs Lisp source code for both built-in libraries and installed third-party libraries. It is therefore very convenient to program in Emacs Lisp using Emacs itself.
Apart from the built-in documentation, Emacs has an unusually long, detailed and well-written
manual. An electronic copy of the ''GNU Emacs Manual'', written by Richard Stallman, is included with GNU Emacs and can be viewed with the built-in
Info browser. XEmacs has a similar manual, which forked from the GNU Emacs Manual at the same time as the XEmacs software. Two other manuals, the ''Emacs Lisp Reference Manual'' by Bill Lewis, Richard Stallman, and Dan Laliberte, and ''Programming in Emacs Lisp'' by Robert Chassell, are also included. Apart from the electronic versions, all three manuals are also available in book form, published by the
Free Software Foundation.
Emacs also has a built-in
tutorial. When Emacs is started with no file to edit, it displays instructions for performing simple editing commands and invoking the tutorial.
Internationalization
Emacs supports the editing of text written in many
human languages. There is support for many alphabets, scripts, writing systems, and cultural conventions. Emacs provides spell checking for many languages by calling external programs such as
ispell. Many
encoding systems, including
UTF-8, are supported. Emacs 22 has full unicode support, however, it uses Emacs-specific encoding internally, necessitating conversion upon load and save.
UTF-8 will become the Emacs-internal encoding in Emacs 23.
However, the Emacs user interface is in English, and has not been translated into any other language, with the exception of the beginners' tutorial.
For visually impaired and blind users, there is a subsystem called ''
Emacspeak'' which allows the editor to be used through audio feedback only.
Using Emacs
Commands
From the Unix shell, a file can be opened for editing by typing "emacs [filename]". If the filename you entered does not exist a file will be created with that name. For example "emacs xorg.conf" will edit the xorg.conf file in the current directory, if it exists. However, Emacs documentation recommends starting Emacs without a file name, to avoid the bad habit of starting a separate Emacs for each file you edit. Visiting all files in a single Emacs process is the way to get the full benefit of Emacs.
In the normal editing mode, Emacs behaves like other text editors: the character keys (''a'', ''b'', ''c'', ''1'', ''2'', ''3'', etc.) insert the corresponding characters, the arrow keys move the editing point,
backspace deletes text, and so forth. Other commands are invoked with
modified keystrokes, pressing the
control key and/or the
meta key/
alt key in conjunction with a regular key. Every editing command is actually an invocation of a function in the Emacs Lisp environment. Even a command as simple as typing
a to insert the character ''a'' involves calling a function--in this case,
self-insert-command.
Some basic commands are shown below; more can be found at
List of Emacs commands. The control key [Ctrl] is denoted by a capital ''C'', and the meta or alt [Alt] key by a capital ''M''.
| Command | Keystroke(s) | Description |
|---|
forward-word | M-f | Move forward past one word. |
search-word | C-s | Search a word in the buffer. |
undo | C-/ | Undo last change, and prior changes if pressed repeatedly. |
keyboard-quit | C-g | Abort the current command. |
fill-paragraph | M-q | Wrap text in ("fill") a paragraph. |
find-file | C-x C-f | Visit a file (you specify the name) in its own editor buffer. |
save-buffer | C-x C-s | Save the current editor buffer in its visited file. |
write-file | C-x C-w | Save the current editor buffer as a file with the name you specify. |
save-buffers-kill-emacs | C-x C-c | Offer to save changes, then exit Emacs. |
set-marker | C-[space]/C-@ | Set a marker from where you want to cut or copy. |
cut | C-w | Cut all text between the marker and the cursor. |
copy | M-w | Copy all text between the marker and the cursor. |
paste | C-y | Paste text from the emacs clipboard |
paste special | C-x C-r | Paste special text from the emacs clipboard (win32 only) |
kill-buffer | C-x k | Kill a buffer by its name, or the current one if no name specified |
Alternatively, if a user would prefer
IBM Common User Access style keys, "cua-mode" can be used. This has been a third-party package up to, and including, GNU Emacs 21, but is included in GNU Emacs 22.
Note that the commands
save-buffer and
save-buffers-kill-emacs use ''multiple'' modified keystrokes. For example,
C-x C-c means: while holding down the control key, press ''x''; then, while holding down the control key, press ''c''. This technique, allowing more commands to be bound to the keyboard than with the use of single keystrokes alone, was popularized by Emacs, which got it from TECMAC, one of the TECO macro collections that immediately preceded Emacs. It has since made its way into modern code editors like
Visual Studio.
When Emacs is running a graphical interface, many commands can be invoked from the menubar or toolbar instead of using the keyboard. However, many experienced Emacs users prefer to use the keyboard because it is faster and more convenient once the necessary keystrokes have been memorized.
Some Emacs commands work by invoking an external program (such as
ispell for spell-checking or
gcc for program compilation), parsing the program's output, and displaying the result in Emacs.
Minibuffer
The ''minibuffer'', normally the bottommost line, is where Emacs requests information.
Text to target in a search, the name of a file to read or save and similar information
is entered in the minibuffer. When applicable,
tab completion is usually available.
File management and display
Emacs keeps text in objects called ''buffers''. The user can create new buffers and dismiss unwanted ones, and several buffers can exist at the same time. Most buffers contain text loaded from
text files, which the user can edit and save back to disk. Buffers are also used to store temporary text, such as the documentation strings displayed by the ''help'' library.
In both text terminal and graphical modes, Emacs is able to split the editing area into separate sections (referred to since 1975 as "windows", which can be confusing on systems that have another concept of "windows" as well), so that more than one buffer can be displayed at a time. This has many uses. For example, one section can be used to display the
source code of a program, while another displays the results from compiling the program. In graphical environments, Emacs can also launch multiple
graphical-environment windows, known as "frames" in the context of Emacs.
Emacs Pinky
Because of Emacs' dependence on the modifier keys, in particular, how the control key is pressed with the
little finger ("pinky"), heavy Emacs users have experienced pain in their pinky fingers (see
repetitive strain injury and
fat-finger). This has been dubbed the "Emacs Pinky", and
vi advocates often cite it as a reason to switch to vi. To alleviate this situation, many Emacs users transpose the left control key and the left caps-lock key or define both as control keys. Others use viper-mode, a feature built into Emacs that allows the use of the vi keys for basic text editing and the Emacs keys for more advanced features. Others use special keyboards such as
Kinesis's Contoured Keyboard, which reduces the strain by moving the modifier keys so that they are in a position to be easily pushed by the
thumb, or
Microsoft Natural keyboard, which has large modifier keys placed symmetrically on both sides of the keyboard so that they can be pressed with the palm.
Distractions
In addition to its many features, GNU Emacs includes a variety of unusual distractions designed to amuse and/or annoy.
★
M-x life renders
Conway's Game of Life
★
M-x gomoku launches a game of
Gomoku
★
M-x tetris launches a game of
Tetris. This is also available in XEmacs
★
M-x pong launches a game of
Pong
★
M-x psychoanalyze-pinhead pipes
Zippy the Pinhead quotes through
ELIZA Doctor (made ineffective in Emacs 22 from the effective removal of Zippy quotes). This was created by Kayvan Sylvan.
★
M-x spook outputs a string of random words designed to distract anyone from the
NSA who might be listening in
See also
★
Comparison of text editors
★
GNU TeXmacs
★
Space-cadet keyboard
★
List of text editors
★
List of Unix programs
References
1. GNU Emacs 22.1 release announcement
2. GNU Emacs FAQ
3. A history of Emacs
4. email quoted in "Be Careful What You Joke About" Leigh Klotz
5. XEmacs vs. GNU Emacs
6. http://www.stifflog.com/2006/10/16/stiff-asks-great-programmers-answer/
7. http://www.notgnu.org/
8. http://www.meadowy.org/meadow/pukiwiki-en/
9. http://www.sxemacs.org
10. Carbon Emacs Package
11. Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X
12. GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000
13. EmacsW32 Home Page
14. GNU Emacs on Windows
Bibliography
★
An Introduction to the Emacs Editor, , Eugene, Ciccarelli, MIT Artificial Intelligence Laboratory, 1978, AIM-447 [ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-447.pdf PDF]
HTML
★
EMACS: The Extensible, Customizable, Self-Documenting Display Editor, , Richard M., Stallman, MIT Artificial Intelligence Laboratory, 1979, updated 1981, AIM-519A [ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-519A.pdf PDF]
HTML
★
GNU Emacs Manual, , Richard M, Stallman, GNU Press, 2002, ISBN 1-882114-85-X
★
My Lisp Experiences and the Development of GNU Emacs
★
An Introduction to Programming in Emacs Lisp, , Robert J., Chassel, GNU Press, 2004, ISBN 1-882114-56-6
★
Writing GNU Emacs Extensions, , Bob, Glickstein, O'Reilly & Associates, 1997 (April), 1-56592-261-1
★
"Learning GNU Emacs, 3rd Edition", , , Cameron, Debra; Elliott, James; Loy, Marc; Raymond, Eric; Rosenblatt, Bill, O'Reilly & Associates, 2004 (December), ISBN 0-596-00648-9
★
"Multics Emacs: The History, Design and Implementation", , Bernard S., Greenberg, , 1979,
★
The Craft of Text Editing -or- Emacs for the Modern World, , Craig A., Finseth, Springer-Verlag & Co, , ISBN 978-1-4116-8297-9
★
Emacs Timeline
External links
★
The GNU Emacs homepage
★
Gnu.org's "Emacs tour"
★
Emacs Tutorial
★
List of Emacs implementations
★
EmacsWiki – community site dedicated to documenting and discussing Emacs
★
Graphical tutorial of Emacs in pdf format
★
Printable Key Bindings Reference Card Plain Text
★
Installing Emacs on a Windows machine- Guide for installing and configuring Emacs using the Windows operating system