Emacs ( /ˈiːmæks/) is a family of text editors, characterized by their extensibility. One manual describes it as "the extensible, customizable, self-documenting, real-time display editor." Development began in the mid-1970s and continues actively as of 2012[update]. Emacs has over 2,000 built-in commands and allows the user to combine these commands into macros to automate work, in particular with the use of Emacs Lisp, a variant of Lisp, providing a deep extension capability.
The original EMACS consisted of a set of Editor MACroS for the TECO editor. It was written in 1976 by Richard Stallman, initially together with Guy L. Steele, Jr.[3][4][5][6] 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.[7]
In Unix culture, Emacs became one of the two main contenders in the traditional editor wars, the other being vi. The word "emacs" is often pluralized as emacsen, by analogy with boxen (itself used by analogy with oxen) and VAXen.[8]
The most popular (and most ported) version of Emacs is GNU Emacs, created by Stallman for the GNU Project.[9] Another version in common use, XEmacs, was forked from GNU Emacs in 1991. XEmacs has remained mostly compatible and continues to use Emacs Lisp like GNU Emacs.
Emacs development began at the MIT AI Lab during the 1970s. Before its introduction, the Incompatible Timesharing System (ITS), the operating system on the AI Lab's PDP-6 and PDP-10 computers, featured a default line editor known as Tape Editor and Corrector (TECO) (later changed to Text Editor and Corrector, the ‘tape' referring to paper tape). Unlike most modern text editors, TECO has separate modes which the user used to either add text, edit existing text, or display the document. 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.
Richard Stallman visited the Stanford AI Lab in 1972 or 1974 and saw the lab's "E" editor, written by Fred Wright.[10] The editor had an intuitive WYSIWYG (What You See Is What You Get) behavior as 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 combined 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.[6]
E had another feature which TECO lacked: 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 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 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 macros 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.[6] The resulting system was called EMACS, which stood for "Editing MACroS". An alternative version is that EMACS stood for "E with MACroS", a dig at E's lack of a macro capability.[citation needed] According to Stallman, he picked the name Emacs "because <E> was not in use as an abbreviation on ITS at the time."[11] (It has also been noted that "Emack & Bolio's" was the name of a popular ice cream store in Cambridge, 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).[citation needed]
According to Stallman, the first operational EMACS system existed in late 1976.[12]
Stallman saw a problem in too much customization and de-facto forking and set certain conditions for usage.[citation needed] He later wrote:[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. It behaved sufficiently differently 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.[13]
Programmers wrote many Emacs-like editors 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. 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; it was later maintained by Richard Soley (who went on to develop the NILE Emacs-like editor for the NIL Project) and Barry Margolin. Many versions of Emacs, including GNU Emacs, later adopted Lisp as an extension language.
James Gosling (who later invented NeWS and the Java programming language) wrote the first Emacs-like editor to run on Unix: Gosling Emacs, in 1981. 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.
In 1984, Stallman began working on GNU Emacs to produce a free software alternative to Gosling Emacs; initially he based it on Gosling Emacs, but he 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. Version 13, the first public release, was made on March 20, 1985. The first widely distributed version of GNU Emacs was 15.34, which appeared later 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.[citation needed]
GNU Emacs was later ported to Unix. Since it had more features than Gosling Emacs, in particular a full-featured Lisp as extension language, it soon replaced Gosling Emacs as the de facto Emacs editor on Unix. A security flaw in GNU Emacs' email subsystem was exploited by Markus Hess in his 1986 hacking spree to gain superuser access to Unix computers.[14]
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 took place in a single CVS trunk until 2008, and today uses the Bazaar DVCS.
Richard Stallman remained the maintainer of GNU Emacs through most of the time, but took several breaks. The latest one persists and started 2008, when maintenance was handed over to Stefan Monnier and Chong Yidong.[15]
Version |
Release date |
Significant changes[16] |
24.1 |
planned: June 08, 2012 |
Emacs Lisp Package Archive, Themes, GTK+3, support for bi-directional input, org-mode included [17] |
23.4 |
January 29, 2012 |
Fixes a security flaw.[18] |
23.3 |
March 10, 2011 |
Improved functionality for using Emacs with version control systems. |
23.2 |
May 8, 2010 |
New tools for using Emacs as an IDE, including navigation across a project and automatic Makefile generation. New major mode for editing JavaScript source. The mouse is hidden while the user is typing. |
23.1 |
July 29, 2009 |
Xft support (anti-aliased fonts are now supported on X [19]), better Unicode support, new modes and packages for viewing PDF and PostScript files (Doc-view mode), connecting to processes through D-Bus (dbus), connecting to the GNU Privacy Guard (EasyPG), editing XML documents (nXML mode), editing Ruby programs (Ruby mode), and more. On Mac OS X, the use of the Carbon GUI libraries 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, plus 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"[20]). |
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 images, toolbar, and tooltips; Unicode support; Support for 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 |
20.1 |
September 17, 1997 |
Multi-lingual support |
19.34 |
1996 |
font-lock mode |
19.28 |
November 1, 1994 |
Support for multiple frames using the X Windowing System; New interface for version control systems, called VC; New hexl mode, which is a hexadecimal editing mode |
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 |
|
Beginning in 1991, Jamie Zawinski and others at Lucid Inc. developed Lucid Emacs, 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.[21] 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.[citation needed]
Many other derivatives of the GNU Emacs have emerged, such as a Japanese version for MS Windows called Meadow,[22] Steve Youngs' fork of XEmacs called SXEmacs,[23] and a version which focuses on integrating with the Apple Macintosh user interface called Aquamacs.
Emacs clones, not based on GNU Emacs source code, have proliferated. One motivation for writing clones was that GNU Emacs was initially targeted at computers with a 32-bit flat address space, and at least 1 MiB of RAM. At a time when such computers were considered high end, this left an opening for smaller reimplementations. Some notable modern clones include:
- MicroEMACS, originally written by Dave Conroy and further developed by Daniel Lawrence, 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,[24] a small, fast, freeware implementation for DOS, Win16, Win32 and GNU/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.
- MINCE (MINCE Is Not Complete Emacs), a version for CP/M and later, for DOS from Mark of the Unicorn. MINCE evolved into Final Word, which eventually became the Sprint word processor from Borland.
- Zile - (Zile is lossy Emacs)
- Climacs, an Emacs-variant implemented in Common Lisp and more influenced by Zmacs than GNU Emacs.
- Yi, an editor written and extensible in Haskell having an emulation mode for Emacs.
- QEmacs,[25] small editor by Fabrice Bellard with UTF-8 support and support for fast editing of large files (hundreds of MiB).
- Epsilon (text editor),[26] 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. Notable for a non-lisp extension language with C syntax, and a very early concurrent command shell buffer implementation under the single tasking MS-DOS.
- Joe's Own Editor has an emulation mode for emacs.
- e3 has an emulation mode for emacs.
- JED has an emulation mode for emacs.
- PceEmacs is the editor for SWI-Prolog that is based on Emacs.
- EmACT a 1986 fork of MicroEmacs by Christian Jullien. EmACT[27] source code is available on sourceforge.
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 (and 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, although one exception to this policy occurred in the case of MULE (MULtilingual Extension, which handles Unicode and more advanced methods of dealing with other languages' scripts) code,[28] since the copyright holder (the Japanese government) could not assign copyright. This does not apply to extremely minor code contributions of less than 10 lines, or to bug fixes. This policy is in place so that FSF can defend the software in court if its copyleft licence is violated.
Older versions of the GNU Emacs documentation appeared 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 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.
Emacs is primarily a text editor, not a word processor; it concentrates on 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.
GNU Emacs is a "real-time display" editor in that edits get displayed on the screen as they occur. This is standard behaviour 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, comes under the control of 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 without having to recompile or even restart the editor.
Users have three primary ways of customizing Emacs:
- 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.
- collecting keystrokes into macros and replaying 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.
- using Emacs Lisp. Usually, user-supplied Emacs Lisp code is stored in a file called
.emacs
and 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.
As a result, the behavior of Emacs can be modified almost without limit, either directly by the user, or by loading Emacs Lisp code known variously as "libraries", "packages", or "extensions".
Emacs contains a large number of Emacs Lisp libraries, and users can find more "third-party" libraries on the Internet. 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 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 clients (22.1)[29]
- Gnus, a full-featured newsreader and email client (and early evidence for Zawinski's Law, along with Rmail)
- MULE, MultiLingual extensions to Emacs, allowing editing text written in multiple languages, somewhat analogous to Unicode
- Org-mode for keeping notes, maintaining lists (to-do lists and other types of lists) and doing project planning and measuring
- Info, an online help-browser
- Planner, a personal information manager
- SES, a spreadsheet
- VM (View Mail), another full-featured email client
- Wanderlust, yet another full-featured email and news client
Many third-party libraries exist on the Internet; for example, there is a library called wikipedia-mode for editing Wikipedia articles. There is even a Usenet newsgroup, 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.
On the systems in which Emacs was first implemented, Emacs often ran noticeably slower than rival text editors, because its Lisp-based design incurs a performance overhead resulting from loading and interpreting the Lisp code. 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.[citation needed] Handling large files on 32 bit systems is still a weak point for Emacs. Before version 23.2 Emacs could handle files up to around 256 MB; with 23.2 this was raised to around 512 MB. Even on 64 bit systems the limit of 512MB is only lifted in Emacs-24.[citation needed]
Emacs has become 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, HP-UX, IRIX, Mac OS X,[30][31] etc.), DOS, Microsoft Windows[32][33][34] and OpenVMS. Unix systems, both free and proprietary, frequently provide Emacs bundled with the operating system.
Emacs runs both on text terminals and in 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 or Cocoa interfaces) and Microsoft Windows. The graphical interface provides menubars, toolbars, scrollbars, and context menus.
Emacs adapts its behavior to the types of text it edits by entering add-on modes called "major modes". Defined major modes exist for ordinary text files, for source code of many programming languages, for HTML documents, for TeX and LaTeX documents, and for many other types of text. Each major mode involves an Emacs Lisp program that extends the editor to behave more conveniently for the particular type of text it covers. Typical major modes will provide some or all of the following common features:
- Syntax highlighting (called "font lock" in Emacs): using different "faces" (font/color combinations)[35] to display keywords, comments, and so forth.
- Automatic indentation: maintaining consistent formatting within a file.
- "Electric" features, i.e. the automatic insertion of elements such as spaces, newlines, and parentheses which the structure of the document requires.
- Special editing commands: for example, major modes for programming languages usually define commands to jump to the beginning and the end of a function, while major modes for markup languages such as XML provide commands to validate documents or to insert closing tags.
Programmers can add extra customized features by using "minor modes". While an Emacs editing buffer can use only one major mode at a time, multiple minor modes can operate simultaneously. These may affect documents directly. For example, the major mode for the C programming language defines a different minor mode for each of the popular indent styles. Or minor modes may affect the editing environment instead. For example, "Winner mode" adds the ability to undo changes to the window configuration, while "MMM-mode" adds the ability to use more than one major mode in a single file, as required in common cases such as editing an HTML document with embedded CSS and JavaScript.
The SLIME major mode extends Emacs into a development environment for Common Lisp. With SLIME the Emacs editor communicates with a (possibly remote) Common Lisp system over a special communication protocol and provides tools like a read–eval–print loop, a data inspector and a debugger.
The first Emacs included an innovative help library that can display the documentation for every single command, variable, and internal function. Because of this, Emacs-proponents described the tools as "self-documenting" in that it presents its own documentation, not only of its normal features but also of its current state, to the user. 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 includes 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. Through Emacs's help system, users can be taken to the actual code for each function, whether a built-in library or an installed third-party library.
Emacs also has a built-in tutorial. When Emacs starts with no file to edit, it displays instructions for performing simple editing commands and invoking the tutorial.
Apart from the built-in documentation, Emacs has an unusually long and detailed manual. An electronic copy of the GNU Emacs Manual, written by Richard Stallman, comes bundled with GNU Emacs and can be viewed with the built-in Info browser. Two other 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 also included. Apart from the electronic versions, all three manuals are also available in book form, published by the Free Software Foundation. XEmacs has a similar manual to the GNU Emacs Manual, which forked from the GNU Emacs Manual at the same time as the XEmacs software.
Emacs supports the editing of text written in many human languages. It has 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. In Emacs 22 Unicode support is fairly advanced; however, it uses Emacs-specific encoding internally,[36] necessitating conversion upon load and save. The internal encoding used by XEmacs is similar but differs in details.[37]
In Emacs 23, UTF-8 has become the Emacs-internal encoding. As for writing direction however, only left-to-right writing is supported. In the forthcoming version, Emacs 24, right-to-left writing will be supported.[38]
The Emacs user interface originated in English, and has not been translated into any other language, with the exception of the beginners' tutorial.
Visually impaired and blind users can use a subsystem called Emacspeak which allows the editor to be used through audio feedback only.
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. Users invoke other commands with modified keystrokes: pressing the control key and/or the meta key/alt key/Escape 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
.
Alternatively, users preferring IBM Common User Access style keys can use "cua-mode". This has been a third-party package up to, and including, GNU Emacs 21, but is included in GNU Emacs from version 22 onward.
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.
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.
Emacs uses the minibuffer (normally the bottommost line) to request 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, command line completion is usually available using the tab and space keys.
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 also serve to store temporary text, such as the documentation strings displayed by the help library.
In both text-terminal and graphical modes, Emacs can 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, or several parts of a 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.
Many heavy Emacs users have experienced repetitive strain injury pain in their pinky fingers,[39] dubbed the Emacs pinky, because of Emacs' strong dependence on Control and Meta keys, and in particular because many keyboard-users press control keys with the little finger (pinky), due to today's common IBM PC keyboard layout.
There are software-side and hardware attempts to mitigate this problem. Software-side methods are:[40]
- Swapping the position of Control key.[41] Although not limited to Emacs, many users transpose the left Control key and the left Caps-lock key. Some define the Caps-lock as Control keys as well, or transpose the Control and Meta keys.
- 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.[42]
- StickyKeys as a means to turn key combinations into key sequences.[43]
- "Dual role" modifier keys. For example, using the Space bar both as the space and the control, where a simple press of the space bar is a space, but when it's pressed with other keys, it works as the control. With keyboards with enough keys around the space bar, Japanese keyboards for example, both Meta and Ctrl (and Shift or whichever) can be pressed with thumbs.[44]
Hardware side solutions are 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 the 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.[39] Foot pedals can also be used.
Historically, the "Emacs pinky" problem didn't exist; the Space-cadet keyboard on which Emacs was originally developed had the Control keys adjacent to the space bar, making them easy to hit with the thumb, and both the Control keys and the dedicated Meta key were larger than the regular keys.
Vi advocates often cite Emacs pinky as a reason to switch to vi—even though vi users often transpose Caps Lock with their mode change key for similar reasons[45].
- 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 (Lysator, Linköping University) (Maj 1987): pp. 8–11. http://www.lysator.liu.se/history/garb/txt/87-1-emacs.txt.
- Stallman, Richard M. (2002). GNU Emacs Manual (15th ed.). GNU Press. ISBN 1-882114-85-X. http://www.gnu.org/software/emacs/manual/.
- Stallman, Richard M. (2002). "My Lisp Experiences and the Development of GNU Emacs". http://www.gnu.org/gnu/rms-lisp.html. Retrieved 2007-02-01.
- Chassel, Robert J. (2004). An Introduction to Programming in Emacs Lisp. GNU Press. ISBN 1-882114-56-6. http://www.gnu.org/software/emacs/emacs-lisp-intro/.
- 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. http://www.oreilly.com/catalog/gnu3/.
- Greenberg, Bernard S. (1979). Multics Emacs: The History, Design and Implementation. http://www.multicians.org/mepap.html.
- Finseth, Craig A. (1991). The Craft of Text Editing -or- Emacs for the Modern World. Springer-Verlag & Co. ISBN 978-1-4116-8297-9. http://www.finseth.com/craft/.
- Zawinski, Jamie (1999, updated 2005-06-21). "Emacs Timeline". http://www.jwz.org/doc/emacs-timeline.html. Retrieved 2006-09-30.
- Thompson, Adrienne G. (2009). "MACSimizing TECO". http://www.codeartnow.com/hacker-art-1/macsimizing-teco. Retrieved 2012-02-26.
- ^ Yidong, Chong (2012-01-29). "Emacs 23.4 released". lists.gnu.org. http://lists.gnu.org/archive/html/emacs-devel/2012-01/msg00881.html. Retrieved 2012-01-28. .
- ^ "Index of /gnu/emacs/pretest/". GNU Project download server. Free Software Foundation. http://alpha.gnu.org/gnu/emacs/pretest/. Retrieved 2012-06-01. "emacs-24.1-rc.tar.gz Fri Jun 1 12:58:52 2012" .
- ^ Bernard S. Greenberg. "Multics Emacs: The History, Design and Implementation". http://www.multicians.org/mepap.html#secii.
- ^ "GNU Emacs FAQ". http://www.gnu.org/software/emacs/emacs-faq.html#Origin-of-the-term-Emacs.
- ^ Jamie Zawinski. "Emacs Timeline". http://www.jwz.org/doc/emacs-timeline.html.
- ^ a b c Adrienne G. Thompson. "MACSimizing TECO". http://www.codeartnow.com/hacker-art-1/macsimizing-teco.
- ^ "A history of Emacs". XEmacs Internals Manual. 2006-12-11. http://www.xemacs.org/Documentation/21.5/html/internals_3.html. Retrieved 2007-08-22.
- ^ "VAXen". Catb.org. http://www.catb.org/~esr/jargon/html/V/VAXen.html. Retrieved 2009-11-08.
- ^ Allombert, Bill. "Debian Popularity Contest". Editors report. Debian. http://popcon.debian.org/main/editors/by_vote. Retrieved 22 November 2011.
- ^ Arhur Samuel (1980-03). "Essential E". ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/80/796/CS-TR-80-796.pdf. Retrieved 2011-08-01.
- ^ Richard M., Stallman. "The EMACS Full-Screen Editor". http://www.lysator.liu.se/history/garb/txt/87-1-emacs.txt. Retrieved 2007-09-14.
- ^ a b Stallman, Richard (March 26, 1981). EMACS: The Extensible, Customizable, Self-Documenting, Display Editor (Technical report). MIT AI Lab. AI Memo 519a. 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. http://pogue.blogs.nytimes.com/2007/08/29/be-careful-what-you-joke-about/. Retrieved 2010-05-01.
- ^ 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. http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg02140.html. Retrieved 2008-02-23. ; see also "Stallman on handing over GNU Emacs, its future and the importance of nomenclature"
- ^ http://www.jwz.org/doc/emacs-timeline.html
- ^ Yidong, Chong (2012-06-01). "Emacs release candidate 24.1". http://lists.gnu.org/archive/html/emacs-devel/2012-06/msg00008.html. Retrieved 2012-06-01.
- ^ Yidong, Chong (2012-01-09). "Security flaw in EDE; new release plans". http://lists.gnu.org/archive/html/emacs-devel/2012-01/msg00387.html. Retrieved 2012-02-23.
- ^ "emacs-fu: emacs 23 has been released!". Emacs-fu.blogspot.com. 2009-07-28. http://emacs-fu.blogspot.com/2009/07/emacs-23-is-very-near.html. Retrieved 2009-11-08.
- ^ Zawodny, Jeremy (2003-12-15). "Emacs Remote Editing with Tramp". Linux Magazine. http://www.linux-mag.com/id/1527. Retrieved 2010-02-01. "Tramp [...] stands for "Transparent Remote (file) Access, Multiple Protocol.""
- ^ Stephen J., Turnbull. "XEmacs vs. GNU Emacs". http://www.xemacs.org/About/XEmacsVsGNUemacs.html. Retrieved 2006-09-27.
- ^ FrontPage - Meadow Wiki
- ^ "SXEmacs Website". Sxemacs.org. 2009-10-11. http://www.sxemacs.org. Retrieved 2009-11-08.
- ^ "NotGNU Emacs Editor (Author's Official Download Site)". Notgnu.org. 2004-01-15. http://www.notgnu.org/. Retrieved 2009-11-08.
- ^ "QEmacs Homepage". Fabrice.bellard.free.fr. http://bellard.org/qemacs/. Retrieved 2009-11-08.
- ^ "Lugaru Software Homepage". http://www.lugaru.com/.
- ^ Christian Jullien. (1986). "EmACT on sourceforge". Christian Jullien. http://sourceforge.net/projects/emact/. Retrieved 31 December 2011.
- ^ "Re: VM and the FSF". Mail.gnu.org. http://mail.gnu.org/archive/html/bug-gnu-emacs/2000-09/msg00065.html. Retrieved 2009-11-08.
- ^ 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.
- ^ "Carbon Emacs Package". http://homepage.mac.com/zenitani/emacs-e.html. Retrieved 2006-09-27.
- ^ "Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X". http://aquamacs.org/. Retrieved 2006-09-27.
- ^ B, Ramprasad (2005-06-24). "GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000". http://www.gnu.org/software/emacs/windows/ntemacs.html. Retrieved 2006-09-27.
- ^ Borgman, Lennart (2006). "EmacsW32 Home Page". http://ourcomments.org/Emacs/EmacsW32.html. Retrieved 2006-09-27.
- ^ "GNU Emacs on Windows". Franz Inc.. 2006. http://www.franz.com/emacs/. Retrieved 2006-09-27.
- ^ 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. http://books.google.com/books?id=-RtYk55cqfgC. Retrieved 2010-11-02. "A face is a font and color combination."
- ^ The internal encoding used by Emacs 22,
charset.h
of the source code.
- ^ http://www.xemacs.org/Documentation/21.5/html/internals_25.html#SEC138
- ^ Forthcoming GNU Emacs supports BIDI
- ^ a b "How To Avoid The Emacs Pinky Problem". Xahlee.org. http://xahlee.org/emacs/emacs_pinky.html. Retrieved 2009-11-08.
- ^ Repeated Strain Injury
- ^ "Moving The Ctrl Key". EmacsWiki. Last edited 2009-09-26 17:40 UTC by asdf (diff). http://www.emacswiki.org/emacs/MovingTheCtrlKey. Retrieved 2009-11-08.
- ^ "Viper Mode". EmacsWiki. Last edited 2009-07-19 22:39 UTC by AaronHawley (diff). http://www.emacswiki.org/emacs/ViperMode. Retrieved 2009-11-08.
- ^ BayleShanks (2009-10-07). "Sticky Modifiers". EmacsWiki. http://www.emacswiki.org/emacs/StickyModifiers. Retrieved 2009-11-08.
- ^ "Home". At home modifier. https://gitorious.org/at-home-modifier/pages/Home. Retrieved 2011-11-30.
- ^ "VimとEmacsのあいだで小指痛を叫んだけもの" (in Japanese). 2007-10-14. http://japan.zdnet.com/blog/komatsu/2007/10/14/entry_27016464/.
Emacs
|
|
GNU Emacs and derivatives |
|
|
|
Other Emacs implementations |
|
|
Emacs modes |
|
|
Emacs internals |
|
|
Other |
|
|
|
|
|
|
History |
|
|
|
Licenses |
|
|
Software |
|
|
Public speakers |
|
|
Other topics |
|
|