GNU Emacs 23.3.1
|Original author(s)||Richard Stallman|
|Initial release||1976, 36–37 years ago|
|Stable release||24.3 (March 11, 2013[±]1)|
|Preview release||24.2-rc2 (August 24, 2012[±])|
|Written in||C, Emacs Lisp|
|Operating system||Cross-platform, GNU|
Emacs (pron.: //) and its derivatives are a family of text editors that are characterized by their extensibility. The manual for one variant describes it as "the extensible, customizable, self-documenting, real-time display editor."2 Development began in the mid-1970s and continues actively as of 2013[update]. Emacs has over 2,000 built-in commands and allows the user to combine these commands into macros to automate work. The use of Emacs Lisp, a variant of the Lisp programming language, provides a deep extension capability.
The original EMACS was written in 1976 by Richard Stallman and Guy L. Steele, Jr. as a set of Editor MACroS for the TECO editor.3456 It was inspired by the ideas of the TECO-macro editors TECMAC and TMACS.7
The most popular, and most ported, version of Emacs is GNU Emacs, which was created by Stallman for the GNU Project.9 XEmacs is a common variant that branched from GNU Emacs in 1991. Both of the variants use Emacs Lisp and are for the most part compatible with each other.
Emacs development began during the 1970s at the MIT AI Lab, whose PDP-6 and PDP-10 computers used the Incompatible Timesharing System (ITS) operating system that featured a default line editor known as Tape 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 rather 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 that of the program ed.
Richard Stallman visited the Stanford AI Lab in 1972 or 1974 and saw the lab's "E" editor, written by Fred Wright.10 He was impressed by the editor's intuitive WYSIWYG (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, a hacker at the AI Lab, had added to TECO a combined display/editing mode called "Control-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 a macro feature to the TECO display-editing mode that allowed the user to redefine any keystroke to run a TECO program.6
E had another feature that TECO lacked: random-access editing. TECO was a page-sequential editor that was designed for editing paper tape on the PDP-1 and typically allowed editing on only one page at a time, 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, where there soon 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 macros into a single set. Steele and Stallman's finished implementation included facilities for extending and documenting the new macro set.6 The resulting system was called EMACS, which stood for "Editing MACroS" or, alternatively, "E with MACroS." Stallman picked the name Emacs "because <E> was not in use as an abbreviation on ITS at the time."11 An apocryphal hacker koan alleges that the program was named after "Emack & Bolio's," a popular Cambridge ice cream store.citation needed The first operational EMACS system existed in late 1976.12
- "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 of computers. 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. Michael McMahon ported Emacs from ITS to the Tenex and TOPS-20 operating systems. Other contributors to early versions of Emacs include Kent Pitman, Earl Killian, and Eugene Ciccarelli. By 1979, Emacs was the main editor used in MIT's AI lab and its Computer Science lab.13
Programmers wrote many Emacs-like editors for other computer systems in the following years. These included EINE ("EINE Is Not EMACS") and ZWEI ("ZWEI Was EINE Initially"), which were written for the Lisp machine by Michael McMahon and Daniel Weinreb, and Sine ("Sine Is Not Eine"),14 which was written by Owen Theodore Anderson. Weinreb's EINE was the first Emacs written in Lisp. In 1978, Bernard Greenberg wrote Multics Emacs almost entirely in Multics Lisp at Honeywell's Cambridge Information Systems Lab. Multics Emacs was later maintained by Richard 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.
James Gosling, who would later invent NeWS and the Java programming language, wrote Gosling Emacs in 1981. The first Emacs-like editor to run on Unix, Gosling Emacs was written in C and used Mocklisp, a language with Lisp-like syntax, as an extension language.
Stallman began work on GNU Emacs in 1984 to produce a free 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 in C and provides Emacs 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 as "1.x.x," but the "1" was dropped after version 1.12 as it was thought that the major number would never change, and the numbering skipped from "1" to "13".citation needed
GNU Emacs was later ported to Unix. It offered more features than Gosling Emacs, in particular a full-featured Lisp as its extension language, and soon replaced Gosling Emacs as the de facto Unix Emacs editor. Markus Hess exploited a security flaw in GNU Emacs' email subsystem in his 1986 cracking spree in which he gained superuser access to Unix computers.15
GNU Emacs development was relatively closed until 1999 and 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 took place in a single CVS trunk until 2008 and today uses the Bazaar DVCS.
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 have overseen maintenance since 2008.16
|Version||Release date||Significant changes17|
|24.3||March 10, 2013||Generalized variables are now in core Emacs Lisp, an update for the Common Lisp emulation library, and a new major mode for Python.18|
|24.2||August 27, 2012||Bugfix release 19|
|24.1||June 10, 2012||Emacs Lisp Package Archive, Themes, optional GTK+3, support for bi-directional input, org-mode included 20|
|23.4||January 29, 2012||Fixes a security flaw.21|
|23.3||March 10, 2011||Improved functionality for using Emacs with version control systems.|
|23.1||July 29, 2009||Support for anti-aliased fonts on X through Xft,22 better Unicode support, Doc-view mode and new packages for viewing PDF and PostScript files, connection to processes through D-Bus (dbus), connection to the GNU Privacy Guard (EasyPG), nXML mode for editing XML documents, Ruby mode for editing Ruby programs, and more. Use of the Carbon GUI libraries on Mac OS X was replaced by use of the more modern Cocoa GUI libraries.|
|22.3||September 5, 2008||GTK+ toolkit support, enhanced mouse support, a new keyboard macro system, improved Unicode support, and drag-and-drop operation on X. Many new modes and packages including a graphical user interface to GDB, Python mode, the mathematical tool Calc, and the remote file editing system Tramp ("Transparent Remote (file) Access, Multiple Protocol").23|
|22.2||March 26, 2008||New support for the Bazaar, Mercurial, Monotone, and Git version control systems. New major modes for editing CSS, Vera, Verilog, and BibTeX style files. Improved scrolling support in Image mode.|
|22.1||June 2, 2007||Support for the GTK+ graphical toolkit, support for drag-and-drop on X, support for the Mac OS X Carbon UI|
|21.1||October 20, 2001||Support for displaying colors and some other attributes on terminals, built-in horizontal scrolling, sound support, wheel mouse support, improved menu-bar layout, support for images, toolbar, and tooltips, Unicode support;|
|20.1||September 17, 1997||Multi-lingual support|
|19.34||August 22, 1996||font-lock mode|
|19.28||November 1, 1994||Support for multiple frames using the X Windowing System; VC, a new interface for version control systems, hexl mode for hexadecimal editing.|
|18.24||October 2, 1986|
|17.36||December 20, 1985||Backup file version numbers|
|16.56||July 15, 1985|
|15.10||April 11, 1985|
|13.0?||March 20, 1985|
Lucid Emacs, based on an early alpha version of GNU Emacs 19, was developed beginning in 1991 by Jamie Zawinski and others at Lucid Inc. One of the best-known early forks in free 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.24 Lucid Emacs has since been renamed XEmacs and remains the second most popular variety of Emacs, after GNU Emacs.citation needed
Other forks, less known than XEmacs, include:
- Meadow - a Japanese version for Microsoft Windows25
- SXEmacs - Steve Youngs' fork of XEmacs26
- Aquamacs - a version which focuses on integrating with the Apple Macintosh user interface
Emacs editors that are not based on GNU Emacs source code have proliferated, some as projects aimed at producing small versions of Emacs. GNU Emacs was initially targeted, in the 1980s, at computers with a 32-bit flat address space and at least 1 MiB of RAM. Such computers were considered high end at the time, and this left a need for smaller reimplementations. In more recent times, small clones have been designed to fit on software installation CDs. Other projects aim to copy Emacs but with 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 on OpenBSD.
- NotGNU,27 a small, fast, freeware implementation for DOS, Win16, Win32 and GNU/Linux by Julie Melbin.
- JOVE (Jonathan's Own Version of Emacs), Jonathan Payne's non-programmable Emacs implementation for UNIX-like systems.
- Perfect Writer, a CP/M implementation 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 to WordStar.
- Freemacs, a DOS version that uses an extension language based on text macro expansion and fits within the original 64 KiB flat memory limit.
- MINCE (MINCE Is Not Complete Emacs), a DOS version for CP/M and later, from Mark of the Unicorn. MINCE evolved into Final Word, which eventually became the Borland Sprint word processor.
- Zile. Zile stands for Zile Is Lossy Emacs.28
- Zmacs, for the MIT Lisp Machine and its descendants, implemented in ZetaLisp.
- Climacs, a Zmacs-influenced variant implemented in Common Lisp.
- QEmacs,29 a small editor by Fabrice Bellard with UTF-8 support and support for fast editing of files as large as hundreds of MiB in size.
- Epsilon,30 an Emacs clone by Lugaru Software. Versions for DOS, Windows, GNU/Linux, FreeBSD, Mac OS X and O/S 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.
- PceEmacs is the Emacs-based editor for SWI-Prolog.
- EmACT, a 1986 fork of MicroEmacs by Christian Jullien. EmACT31 source code is available at SourceForge.
- Amacs, a commercial Apple II ProDOS version of Emacs implemented in 6502 assembly by Brian Fox.
- Hemlock (editor), originally written in Spice Lisp, then Common Lisp. A part of CMU Common Lisp. Influenced by Zmacs. Later forked by the LispWorks and Clozure CL projects.
- Yi, an editor that is written and extensible in Haskell and has an emulation mode for Emacs.
- Joe's Own Editor has an emulation mode for Emacs.
- JED has an emulation mode for Emacs.
The terms of the GNU General Public License (GPL) state that the Emacs source code, including both the C and Emacs Lisp components, are freely available for examination, modification, and redistribution.
For GNU Emacs, like many other GNU packages, it remains policy to accept significant code contributions only if the copyright holder executes a suitable disclaimer or assignment of their copyright interest to the Free Software Foundation. Bug fixes and minor code contributions of fewer than 10 lines are exempt. This policy is in place so that the FSF can defend the software in court if its copyleft license is violated.
Older versions of the GNU Emacs documentation appeared under an ad-hoc license that required the inclusion of certain text in any modified copy. In the GNU Emacs user's manual, for example, this included instructions for obtaining GNU Emacs and Richard Stallman's 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 with "invariant sections" that require the inclusion of the same documents and that the manuals proclaim themselves as GNU Manuals.
Emacs is primarily a text editor and is designed for manipulating pieces of text, although it is capable of formatting and printing documents like a word processor. Emacs provides commands to manipulate words and paragraphs, syntax highlighting for making source code easier to read, and "keyboard macros" for performing user-defined batches of editing commands.
GNU Emacs is a "real-time display" editor, as its edits are displayed onscreen as they occur. This is standard behavior for modern text editors.
Almost all of the functionality in the GNU Emacs editor, ranging from basic editing operations such as the insertion of characters into a document to the configuration of the user interface, is achieved through the use of the C programming language and a dialect of the Lisp programming language known as Emacs Lisp. In this Lisp environment, variables and functions can be modified without the need to recompile or restart the editor.
Users have three primary ways of customizing Emacs:
- The customize extension allows the user to set common customization variables, such as the color scheme. This is provided for users who do not want to work with Emacs Lisp code.
- Keystrokes 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.
- Customizations written in Emacs Lisp are stored in a file called
init.elon more recent versions, and loaded when Emacs is launched. The
.emacsfile is often used to set variables and key bindings that differ from the default setting and to define new commands that the user finds convenient. The
.emacsfiles of many advanced users are hundreds of lines long and enable idiosyncratic customizations that cause Emacs to diverge wildly from the default behavior.
The behavior of GNU Emacs can be modified almost without limit, either by direct user involvement or by loading Emacs Lisp code known variously as "libraries," "packages," or "extensions," a large number of which are included with an GNU Emacs installation. GNU Emacs can be used as an Integrated Development Environment (IDE) that allows programmers to edit, compile and debug their code within a single interface. Other libraries perform more unusual functions. A few examples include:
- AUCTeX, a suite of extensions that facilitate the creation of TeX and LaTeX documents
- Calc, a powerful RPN numerical calculator
- Calendar-mode, for keeping appointment calendars and diaries
- Dissociated Press, a Racter-like text generator.
- Dunnet, a text adventure
- Ediff and Emerge, for comparing and combining files interactively.
- Emacs/W3, a web browser
- ERC and rcirc, IRC clients32
- Emacs Speaks Statistics(ESS) modes for editing statistical languages like R and SAS
- Gnus, a full-featured newsreader and email client and early evidence for Zawinski's Law
- MULE (MultiLingual extensions to Emacs) allows the editing of text written in multiple languages in a manner somewhat analogous to Unicode
- Org-mode for keeping notes, maintaining various types of lists, planning and measuring projects, and for composing documents in many formats. (Such as PDF, HTML, or OpenDocument formats.)
- Info, an online help-browser
- Planner, a personal information manager
- SES, a spreadsheet
- SLIME33 extends GNU Emacs into a development environment for Common Lisp. With SLIME (written in Emacs Lisp) the GNU Emacs editor communicates with a Common Lisp system (using the SWANK backend) over a special communication protocol and provides such tools as a read–eval–print loop, a data inspector and a debugger.
- Viper, a vi emulation layer;34 also, Evil, a Vim emulation layer35
- VM (View Mail), another full-featured email client
- Wanderlust, a versatile email and news client
Third-party libraries available on the Internet include Wikipedia-mode for editing Wikipedia articles. New libraries are posted on the Usenet newsgroup gnu.emacs.sources gnu.emacs.sources. Some third-party libraries are eventually included with GNU Emacs as standard libraries.
GNU Emacs often ran noticeably slower than rival text editors on the systems in which it was first implemented, because the loading and interpreting of its Lisp-based code incurs a performance overhead. Modern computers are powerful enough to run GNU Emacs very quickly, although its performance still lags when handling large files on 32-bit systems. Earlier versions of GNU Emacs could handle files of up to around 256 MB in size, but this was raised to 512 MB with GNU Emacs 23.2. GNU Emacs 24 is necessary to lift the 512MB limit on 64-bit systems.citation needed
GNU Emacs has become one of the most-ported non-trivial computer programs and runs on a wide variety of operating systems, including DOS, Microsoft Windows363738 and OpenVMS. It is available for most Unix-like operating systems, such as GNU/Linux, the various BSDs, Solaris, AIX, HP-UX, IRIX and Mac OS X,3940 and is often included with their system installation packages. Native ports of GNU Emacs exist for Android41better source needed and Nokia's Maemo.42better source needed
GNU Emacs runs both on text terminals and in graphical user interface (GUI) environments. On Unix-like operating systems, GNU Emacs uses the X Window System to produce its GUI either directly or by using a "widget toolkit" such as Motif, LessTif, or GTK+. GNU Emacs can also use the graphics systems native to Mac OS X and Microsoft Windows to provide menubars, toolbars, scrollbars and context menus.
GNU Emacs can edit a variety of different types of text and adapts its behavior by entering add-on modes called "major modes." Defined major modes exist for many different file types including ordinary text files, the source code of many programming languages, HTML documents, and TeX and LaTeX documents. Each major mode involves an Emacs Lisp program that extends the editor to behave more conveniently for the specified type of text. Major modes typically provide some or all of the following common features:
- Syntax highlighting ("font lock"): combinations of fonts and colors, termed "faces,"43 that differentiate between document elements such as keywords and comments.
- Automatic indentation to maintain consistent formatting within a file.
- The automatic insertion of elements required by the structure of the document, such as spaces, newlines, and parentheses.
- Special editing commands, such as commands to jump to the beginning or the end of a function while editing a programming file or commands to validate documents or insert closing tags while working with markup languages such as XML.
The use of "minor modes" enables further customization. A GNU Emacs editing buffer can use only one major mode at a time, but multiple minor modes can operate simultaneously. These may operate directly on documents, as in the way the major mode for the C programming language defines a separate minor mode for each of its popular indent styles, or they may alter the editing environment. Examples of the latter include a mode that adds the ability to undo changes to the window configuration and one that allows multiple major modes to be used in a single file, as required when editing a document in which multiple programming languages are embedded.
The first Emacs contained a "help" library that included documentation for every command, variable and internal function. Because of this, Emacs proponents described the software as "self-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 such as Lisp and Java. 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-in tutorial. Emacs displays instructions for performing simple editing commands and invoking the tutorial when it is launched with no file to edit.
Apart from the built-in documentation, GNU Emacs has an unusually long and detailed manual.citation needed An electronic copy of the GNU Emacs Manual, written by Richard Stallman, is bundled with GNU Emacs and can be viewed with the built-in Info browser. Two additional manuals, the Emacs Lisp Reference Manual by Bil Lewis, Richard Stallman, and Dan Laliberte and An Introduction to Programming in Emacs Lisp by Robert Chassell, are included. All three manuals are also published in book form by the Free Software Foundation. The XEmacs manual is similar to the GNU Emacs Manual, from which it forked at the same time that the XEmacs software forked from GNU Emacs.
GNU Emacs has support for many alphabets, scripts, writing systems, and cultural conventions and provides spell-checking for many languages by calling external programs such as ispell. Version 24 added support for bidirectional text and left-to-right and right-to-left writing direction for languages such as Arabic, Persian and Hebrew.
Many encoding systems, including UTF-8, are supported. GNU Emacs uses UTF-8 for its encoding as of GNU 23, while prior versions used their own encoding internally and performed conversion upon load and save. The internal encoding used by XEmacs is similar to that of GNU Emacs but differs in details.
The GNU Emacs user interface originated in English and, with the exception of the beginners' tutorial, has not been translated into any other language.
A subsystem called Emacspeak enables visually impaired and blind users to use the editor through audio feedback.
In its normal editing mode, GNU Emacs behaves like other text editors and allows the user to insert characters with the corresponding keys and to move the editing point with the arrow keys. Pressing the control key and/or the meta key/alt key/Escape key in conjunction with a regular key produces modified keystrokes that invoke functions from the Emacs Lisp environment. Commands such as
save-buffers-kill-emacs combine multiple modified keystrokes .
Some GNU 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 GNU Emacs. Users who prefer IBM Common User Access-style keys can use "cua-mode," a package that originally was a third-party add-on but has been included in GNU Emacs since version 22.
Emacs uses the "minibuffer," normally the bottommost line, to request information. The minibuffer holds information such as text to target in a search or the name of a file to read or save. When applicable, command line completion is available using the tab and space keys.
Emacs keeps text in buffers. The user can create new buffers and dismiss unwanted ones, and several buffers can exist at the same time. Most contain text loaded from text files, which the user can edit and save back to permanent storage. Buffers also serve to store temporary text, such as the documentation strings displayed by the "help" library.
Emacs can split the editing area into separate sections called "windows," a feature that has been available since 1975 and is unrelated to other systems' concepts of "windows." This is available both in text-terminal and graphical modes and allows more than one buffer, or several parts of a buffer, to be displayed at once. A common application is to display the source code of a program in one window while another displays the results of compiling the program. In graphical environments, Emacs can launch multiple graphical-environment windows, known in the context of Emacs as "frames".
Many heavy Emacs users have experienced a repetitive strain injury44 called "Emacs pinky" because of Emacs' strong dependence on Control and Meta keys and because of the position of the Control key in the modern IBM PC keyboard layout.
This problem has been addressed through both software and hardware. Software-side methods include:45
- Customizing the key layout so that the Control key is transposed with the caps lock key.46 Similar techniques include defining the caps lock key as a Control key or transposing the Control and Meta keys.
- Emacs' built-in "Viper-mode" that allows use of the vi key layout for basic text editing and the Emacs scheme for more advanced features.47
- StickyKeys, which turns key combinations into key sequences.48
- Giving a dual role to a more-comfortably accessed key such as the Space bar so that it functions as a Control key when pressed in combination with other keys. Keyboards with a greater number of keys adjacent to the space bar, such as Japanese keyboards, allow thumb control of both the Meta and Control keys.49
- Driving Emacs through voice input.
- Software, such as xwrits, that reminds the user to take regularly scheduled breaks.
Hardware solutions include special keyboards such as Kinesis's Contoured Keyboard, which places the modifier keys where they can easily be operated by the thumb, or the Microsoft Natural keyboard, whose large modifier keys are placed symmetrically on both sides of the keyboard and can be pressed with the palm of the hand.44 Foot pedals can also be used.
The "Emacs pinky" is a relatively recent development. The Space-cadet keyboard on which Emacs was developed had oversized Control keys that were adjacent to the space bar and were easy to reach with the thumb.
vi advocates often cite Emacs pinky as a reason to switch, although some vi users transpose their mode change key with the caps lock key for similar reasons.50
- Ciccarelli, Eugene (1978). An Introduction to the Emacs Editor. Cambridge, Massachusetts: MIT Artificial Intelligence Laboratory. AIM-447. PDF HTML
- Stallman, Richard M. (1979, updated 1981). EMACS: The Extensible, Customizable, Self-Documenting Display Editor. Cambridge Massachusetts: MIT Artificial Intelligence Laboratory. AIM-519A. PDF HTML
- Stallman, Richard M. (1987). "The EMACS Full-Screen Editor". GARB (Maj 1987) (Lysator, Linköping University). pp. 8–11.
- Stallman, Richard M. (2002). GNU Emacs Manual (15th ed.). GNU Press. ISBN 1-882114-85-X.
- Stallman, Richard M. (2002). "My Lisp Experiences and the Development of GNU Emacs". Retrieved 2007-02-01.
- Chassel, Robert J. (2004). An Introduction to Programming in Emacs Lisp. GNU Press. ISBN 1-882114-56-6.
- Glickstein, Bob (1997 (April)). Writing GNU Emacs Extensions. O'Reilly & Associates. ISBN 1-56592-261-1.
- Cameron, Debra; Elliott, James; Loy, Marc; Raymond, Eric; Rosenblatt, Bill (2004 (December)). Learning GNU Emacs, 3rd Edition. O'Reilly & Associates. ISBN 0-596-00648-9.
- Greenberg, Bernard S. (1979). Multics Emacs: The History, Design and Implementation.
- Finseth, Craig A. (1991). The Craft of Text Editing -or- Emacs for the Modern World. Springer-Verlag & Co. ISBN 978-1-4116-8297-9.
- Zawinski, Jamie (1999, updated 2005-06-21). "Emacs Timeline". Retrieved 2006-09-30.
- Thompson, Adrienne G. (2009). "MACSimizing TECO". Retrieved 2012-02-26.
- Morris, Glenn (2012-08-27). "Emacs 24.3 released". lists.gnu.org. http://thread.gmane.org/gmane.emacs.announce/35.
- "GNU Emacs Manual". GNU Emacs Manual. FSF. Retrieved 24 November 2012.
- Bernard S. Greenberg. "Multics Emacs: The History, Design and Implementation".
- "GNU Emacs FAQ".
- Jamie Zawinski. "Emacs Timeline".
- Adrienne G. Thompson. "MACSimizing TECO".
- "A history of Emacs". XEmacs Internals Manual. 2006-12-11. Retrieved 2007-08-22.
- "VAXen". Catb.org. Retrieved 2009-11-08.
- Allombert, Bill. "Debian Popularity Contest". Editors report. Debian. Retrieved 22 November 2011.
- Arhur Samuel (1980-03). "Essential E". Retrieved 2011-08-01.
- Richard M., Stallman. "The EMACS Full-Screen Editor". Retrieved 2007-09-14.
- Stallman, Richard (March 26, 1981). EMACS: The Extensible, Customizable, Self-Documenting, Display Editor (Technical report AI Memo 519a). MIT AI Lab. http://dspace.mit.edu/bitstream/handle/1721.1/5736/AIM-519A.pdf. Retrieved 2011-01-07.
- Leigh Klotz (2007-08-29). "email quoted in "Be Careful What You Joke About"". The New York Times. Retrieved 2010-05-01.
- Owen Theodore Anderson (1979-01). "The Design and Implementation of a Display-Oriented Editor Writing System". Retrieved 2012-09-09.
- Stoll, Clifford (1988). "Stalking the wily hacker". Communications of the ACM 31 (5): 484–497. doi:10.1145/42411.42412
- "Re: Looking for a new Emacs maintainer or team". gnu.org Mailing List. Retrieved 2008-02-23.; see also "Stallman on handing over GNU Emacs, its future and the importance of nomenclature"
- Morris, Glenn (2013-3-10). "Emacs 24.3 released". Retrieved 2013-03-16.
- Yidong, Chong (2012-8-27). "Emacs release candidate 24.2". Retrieved 2012-11-11.
- Yidong, Chong (2012-06-01). "Emacs release candidate 24.1". Retrieved 2012-06-01.
- Yidong, Chong (2012-01-09). "Security flaw in EDE; new release plans". Retrieved 2012-02-23.
- "emacs-fu: emacs 23 has been released!". Emacs-fu.blogspot.com. 2009-07-28. Retrieved 2009-11-08.
- Zawodny, Jeremy (2003-12-15). "Emacs Remote Editing with Tramp". Linux Magazine. Retrieved 2010-02-01. "Tramp [...] stands for "Transparent Remote (file) Access, Multiple Protocol.""
- Stephen J., Turnbull. "XEmacs vs. GNU Emacs". Retrieved 2012-10-02.
- FrontPage - Meadow Wiki
- "SXEmacs Website". Sxemacs.org. 2009-10-11. Retrieved 2009-11-08.
- "NotGNU Emacs Editor (Author's Official Download Site)". Notgnu.org. 2004-01-15. Retrieved 2009-11-08.
- "Zile home page".
- "QEmacs Homepage". Fabrice.bellard.free.fr. Retrieved 2009-11-08.
- "Lugaru Software Homepage".
- Christian Jullien. (1986). "EmACT on sourceforge". Christian Jullien. Retrieved 31 December 2011.
- Stallman, Richard (2007-06-03). "Emacs 22.1 released". info-gnu-emacs mailing list. http://lists.gnu.org/archive/html/info-gnu-emacs/2007-06/msg00000.html. Retrieved 2011-07-31.
- SLIME: The Superior Lisp Interaction Mode for Emacs
- Kifer, Michael. "Emacs packages: Viper and Ediff". Michael Kifer's website. Retrieved 2012-11-15.
- "Home". Evil wiki. Gitorious. Retrieved 2012-11-15.
- B, Ramprasad (2005-06-24). "GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000". Retrieved 2006-09-27.
- Borgman, Lennart (2006). "EmacsW32 Home Page". Retrieved 2006-09-27.
- "GNU Emacs on Windows". Franz Inc. 2006. Retrieved 2006-09-27.
- "Carbon Emacs Package". Retrieved 2012-06-10.
- "Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X". Retrieved 2006-09-27.
- "Emacs on Android". EmacsWiki.
- "CategoryPorts". EmacsWiki.
- Cameron, Debra; Rosenblatt, Bill; Raymond, Eric S. (1996). Learning GNU Emacs. In a Nutshell Series (2 ed.). O'Reilly Media, Inc. p. 533. ISBN 978-1-56592-152-8. Retrieved 2010-11-02. "A face is a font and colour combination."
- "How To Avoid The Emacs Pinky Problem". Xahlee.org. Retrieved 2009-11-08.
- Repeated Strain Injury
- "Moving The Ctrl Key". EmacsWiki. Last edited 2009-09-26 17:40 UTC by asdf (diff). Retrieved 2009-11-08.
- "Viper Mode". EmacsWiki. Last edited 2009-07-19 22:39 UTC by AaronHawley (diff). Retrieved 2009-11-08.
- BayleShanks (2009-10-07). "Sticky Modifiers". EmacsWiki. Retrieved 2009-11-08.
- "Home". At home modifier. Retrieved 2011-11-30.
- "VimとEmacsのあいだで小指痛を叫んだけもの" (in Japanese). 2007-10-14.
|Wikiquote has a collection of quotations related to: Emacs|
|Wikimedia Commons has media related to: Emacs|
- Official website
- Reviewed entry in the Free Software Directory.
- List of Emacs implementations
- Emacs stuff comparison
Content from Wikipedia, the Free Encyclopedia
What Is This Site? The Ultimate Study Guide is a mirror of English Wikipedia. It exists in order to provide Wikipedia content to those who are unable to access the main Wikipedia site due to draconian government, employer, or school restrictions. The site displays all the text content from Wikipedia. Our sponsors generously cover part of the cost of hosting this site, and their ads are shown as part of this agreement. We regret that we are unable to display certain controversial images on some pages the site at the request of the sponsors. If you need to see images which we are unable to show, we encourage you to view Wikipedia directly if possible, and apologize for this inconvenience.
A product of XPR Content Systems. 47 Union St #9K, Grand Falls-Windsor NL A2A 2C9 CANADA