All Topics  
Emacs

 

   Email Print
   Bookmark   Link






 

Emacs



 
 
Emacs is a class of feature-rich text editor
Text editor

A text editor is a type of software application used for editing plain text files.Text editors are often provided with operating systems or software development packages, and can be used to change configuration files and programming language source code....
s, usually characterized by their extensibility. Emacs has, perhaps, more editing commands than any other editor or word processor, numbering over 1,000. It also allows the user to combine these commands into macros to automate work.

Development began in the mid-70s and continues actively . Emacs text editors are most popular with technically proficient computer users and computer programmers.






Discussion
Ask a question about 'Emacs'
Start a new discussion about 'Emacs'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Emacs is a class of feature-rich text editor
Text editor

A text editor is a type of software application used for editing plain text files.Text editors are often provided with operating systems or software development packages, and can be used to change configuration files and programming language source code....
s, usually characterized by their extensibility. Emacs has, perhaps, more editing commands than any other editor or word processor, numbering over 1,000. It also allows the user to combine these commands into macros to automate work.

Development began in the mid-70s and continues actively . Emacs text editors are most popular with technically proficient computer users and computer programmers. The most popular version of Emacs is GNU Emacs, a part of the GNU project
GNU Project

The GNU Project is a free software, mass collaboration project, announced on September 27 1983 by Richard Stallman. It initiated the GNU operating system, software development for which began in January 1984....
, which is commonly referred to simply as "Emacs".

The GNU Emacs manual describes it as "the extensible, customizable, self-documenting, real-time display editor." It is also the most ported of the implementations of Emacs. As of September 2008, the latest stable release of GNU Emacs is version 22.3.

Aside from GNU Emacs, another version of Emacs in common use, XEmacs
XEmacs

XEmacs is a graphical user interface- and text terminal-based text editor which runs on almost any Unix-like operating system as well as Microsoft Windows....
, forked
Fork (software development)

In software engineering, a project fork happens when developers take a copy of source code from one Computer software and start independent development on it, creating a distinct piece of software....
 from GNU Emacs in 1991. XEmacs has remained mostly compatible and continues to use the same extension language, Emacs Lisp
Emacs Lisp

Emacs Lisp is a dialect of the Lisp programming language used by the GNU Emacs and XEmacs text editors . It is used for implementing most of the editing functionality built into Emacs, the remainder being written in C ....
, as GNU Emacs. Large parts of GNU Emacs and XEmacs are written in Emacs Lisp, so the extensibility of Emacs' features is deep.

The original EMACS consisted of a set of Editor MACroS for the TECO
Text Editor and Corrector

TECO is a text editor originally developed at the Massachusetts Institute of Technology in the 1960s, after which it was modified by 'just about everybody'....
 editor. It was written in 1976 by Richard Stallman
Richard Stallman

Richard Matthew Stallman , often abbreviated "rms","'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman...
, initially together with Guy L. Steele, Jr.
Guy L. Steele, Jr.

Guy Lewis Steele Jr., , also known as "The Great Quux" and GLS , is an American computer scientist who has played an important role in designing and documenting several computer programming languages....
. It was inspired by the ideas of TECMAC and TMACS, a pair of TECO-macro editors written by Steele, Dave Moon, Richard Greenblatt
Richard Greenblatt (programmer)

Richard D. Greenblatt is an American programmer. He was born in Portland, Oregon. His family moved to Philadelphia, Pennsylvania when he was a child....
, Charles Frankston, and others.

In Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
 culture, Emacs became one of the two main contenders in the traditional editor war
Editor war

Editor war is the common name for the rivalry between users of the vi and Emacs text editors. The rivalry has become a lasting part of hacker culture and the free software community....
s, the other being vi
Vi

vi is a family of screen-oriented text editors which share common characteristics, such as methods of invocation from the operating system command interpreter, and characteristic user interface features....
. The word "emacs" is often pluralized as emacsen, by analogy with boxen (itself used by analogy with oxen) and VAXen.

History


Emacs development began at the MIT AI Lab during the 1970s. Before its introduction, the Incompatible Timesharing System
Incompatible Timesharing System

ITS, the Incompatible Timesharing System , was an early, revolutionary, and influential time-sharing operating system from Massachusetts Institute of Technology; it was developed principally by the MIT Artificial Intelligence Laboratory at MIT, with some help from Project MAC....
 (ITS), the operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
 on the AI Lab's PDP-6
PDP-6

The PDP-6 was a computer model developed by Digital Equipment Corporation in 1963. It was influential primarily as the prototype for the later PDP-10; the instruction sets of the two machines are almost identical....
 and PDP-10
PDP-10

The PDP-10 was a mainframe computer manufactured by Digital Equipment Corporation from the late 1960s on; the name stands for "Programmed Data Processor model 10"....
 computers, featured a default line editor
Line editor

A line editor is a text editor computer program that is oriented around lines.They precede screen-based text editors and originated in an era when a computer operator typically interacted with a teletype , with no video display, and no ability to navigate a cursor interactively in a document....
 known as Tape Editor and Corrector
Text Editor and Corrector

TECO is a text editor originally developed at the Massachusetts Institute of Technology in the 1960s, after which it was modified by 'just about everybody'....
 (TECO) (later changed to Text Editor and Corrector
Text Editor and Corrector

TECO is a text editor originally developed at the Massachusetts Institute of Technology in the 1960s, after which it was modified by 'just about everybody'....
, 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
Richard Stallman

Richard Matthew Stallman , often abbreviated "rms","'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= 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
WYSIWYG

WYSIWYG , is an acronym for What You See Is What You Get, used in computing to describe a system in which content displayed during editing appears very similar to the final output, which might be a printed document, web page, slide presentation or even the lighting for a theatrical event....
 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.

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
PDP-1

The PDP-1 was the first computer in Digital Equipment Corporation's Programmed Data Processor series and was first produced in 1960. It is famous for being the computer most important in the creation of Hacker culture, at Massachusetts Institute of Technology, Bolt, Beranek and Newman and elsewhere....
, 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
Guy L. Steele, Jr.

Guy Lewis Steele Jr., , also known as "The Great Quux" and GLS , is an American computer scientist who has played an important role in designing and documenting several computer programming languages....
 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. 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. 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
Emack & Bolio's

Emack & Bolio's is a chain of ice cream stores based in Boston, Massachusetts, United States. The chain was founded by Robert Rook, a lawyer and self-declared hippie who has worked closely with the homeless, Opposition to the Vietnam War, Civil rights and LGBT social movements advocates, and numerous rock bands such as Aerosmith, U2, Boston ,...
" was the name of a popular ice cream store in Cambridge
Cambridge, Massachusetts

Cambridge is a city in the Greater Boston area of Massachusetts, United States. It was named in honor of the University of Cambridge in England....
, 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
Hacker koan

Out of hacker culture, and especially the artificial intelligence community at MIT, there have sprung a number of Geek humorous short stories about computer science dubbed hacker koans; most of these are recorded in an appendix to the Jargon File, where they are called Artificial Intelligence Koans....
, Emacs and Bolio
Hacker koan

Out of hacker culture, and especially the artificial intelligence community at MIT, there have sprung a number of Geek humorous short stories about computer science dubbed hacker koans; most of these are recorded in an appendix to the Jargon File, where they are called Artificial Intelligence Koans....
).

Stallman saw a problem in 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 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
Porting

In computer science, porting is the process of adapting software so that an executable Computer program can be created for a computing environment that is different from the one for which it was originally designed ....
 from ITS to the Tenex
TOPS-20

The TOPS-20 operating system by Digital Equipment Corporation was the second proprietary OS for the PDP-10 mainframe computer. TOPS-20 began in 1969 as Bolt, Beranek and Newman's TENEX operating system, using special paging hardware....
 and TOPS-20
TOPS-20

The TOPS-20 operating system by Digital Equipment Corporation was the second proprietary OS for the PDP-10 mainframe computer. TOPS-20 began in 1969 as Bolt, Beranek and Newman's TENEX operating system, using special paging hardware....
 operating systems by Michael McMahon, but not Unix, initially. Other contributors to early versions of Emacs include Kent Pitman
Kent Pitman

Kent M. Pitman is the President of and has been involved for many years in the design, implementation and use of Lisp programming language and Scheme systems....
, 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.

Other early implementations

Programmers wrote many Emacs-like editors in the following years for other computer systems, including SINE (Sine is not EMACS), EINE
EINE

EINE was the Emacs text editor for Lisp machines. It was developed by Daniel Weinreb and Mike McMahon in the late 1970s, with a command set the same as the original Emacs written in Text Editor and Corrector by Richard Stallman....
 ("EINE Is Not EMACS") and ZWEI ("ZWEI Was EINE Initially", for the Lisp machine
Lisp machine

Lisp machines were general-purpose computers designed to efficiently run Lisp programming language as their main programming language. In a sense, they were the first commercial single-user Computer workstation....
), which were written by Michael McMahon and Daniel Weinreb
Daniel Weinreb

Daniel L. Weinreb is a List of programmers and computer scientist. He attended MIT 1975-1979, graduating with a B.S. in Computer Science and Electrical Engineering, where he wrote EINE....
. ("Eine" and "zwei" are German for "one" and "two".) Weinreb's EINE
EINE

EINE was the Emacs text editor for Lisp machines. It was developed by Daniel Weinreb and Mike McMahon in the late 1970s, with a command set the same as the original Emacs written in Text Editor and Corrector by Richard Stallman....
 was the first Emacs written in Lisp. In 1978, Bernard Greenberg
Bernard Greenberg

Bernard S. Greenberg is a List of programmers andcomputer scientist, known for his work on Multicsand the Lisp machine.=Projects=In 1978, Greenberg implemented Multics Emacs using Multics Maclisp....
 wrote Multics Emacs
Multics Emacs

Multics Emacs was an implementation of the Emacs text editor written in Maclisp by Bernard Greenberg at Honeywell's Cambridge Information Systems Lab....
 at Honeywell
Honeywell

Honeywell is a major United States multinational corporation list of conglomerates company that produces a variety of consumer products, engineering services, and aerospace systems for a wide variety of customers, from private consumers to major corporations and governments....
's Cambridge Information Systems Lab. Many versions of Emacs, including GNU Emacs, later adopted Lisp as an extension language.

James Gosling
James Gosling

James A. Gosling, Order of Canada, Doctor of Philosophy is a famous software developer, best known as the father of the Java ....
 (who later invented NeWS
NeWS

NeWS was a windowing system developed by Sun Microsystems in the mid 1980s. Originally known as "SunDew", its primary authors were James Gosling and David S....
 and the Java programming language
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
) wrote the first Emacs-like editor to run on Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
: Gosling Emacs
Gosling Emacs

Gosling Emacs was an Emacs implementation written in 1981 by James Gosling in C . It was the first Emacs to run under Unix. Its extension language, Mocklisp, has a syntax that appears similar to Lisp programming language, but Mocklisp has no lists or other structured datatypes....
, in 1981. It was written in C
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
 and, notably, used a language with Lisp-like syntax known as Mocklisp
Mocklisp

Mocklisp is the extension language of Gosling Emacs. While resembling Lisp programming language in many ways, it is semantically quite different....
 as an extension language. In 1984 it was proprietary software
Proprietary software

Proprietary software is a term coined by advocates of the free software movement to describe computer software which is the legal property of one party....
.

GNU Emacs

In 1984, Stallman began working on GNU Emacs to produce a free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 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 Project

The GNU Project is a free software, mass collaboration project, announced on September 27 1983 by Richard Stallman. It initiated the GNU operating system, software development for which began in January 1984....
. GNU Emacs is written in C and provides Emacs Lisp
Emacs Lisp

Emacs Lisp is a dialect of the Lisp programming language used by the GNU Emacs and XEmacs text editors . It is used for implementing most of the editing functionality built into Emacs, the remainder being written in C ....
 (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.

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.

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 Cathedral and the Bazaar

The Cathedral and the Bazaar is an essay by Eric S. Raymond on software engineering methods, based on his observations of the Linux kernel development process and his experiences managing an open source project, fetchmail....
. The project has since adopted a public development mailing list and anonymous CVS
Concurrent Versions System

In the field of software development, the Concurrent Versions System , also known as the Concurrent Versioning System, is a free software revision control system....
 access. Development takes place in a single CVS trunk, which was at version 23.0.60 as of mid-2008.

Richard Stallman
Richard Stallman

Richard Matthew Stallman , often abbreviated "rms","'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= 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.

Release history
Version Release date Significant changes
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.
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
Carbon (API)

Carbon is one of Apple Inc.'s procedural Application programming interfaces for the Apple Macintosh operating system. It permits a good degree of forward and backward compatibility between source code written to run on the older and now dated Mac OS history , and the newer Mac OS X....
 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.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 


XEmacs

Beginning in 1991, Jamie Zawinski
Jamie Zawinski

Jamie W. Zawinski , commonly known as jwz, is an United States computer programmer responsible for significant contributions to the free software projects Mozilla and XEmacs, and early versions of the proprietary Netscape Navigator web browser....
 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. This was one of the most famous early forks
Fork (software development)

In software engineering, a project fork happens when developers take a copy of source code from one Computer software and start independent development on it, creating a distinct piece of software....
 of a free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 program. Lucid Emacs has since been renamed XEmacs
XEmacs

XEmacs is a graphical user interface- and text terminal-based text editor which runs on almost any Unix-like operating system as well as Microsoft Windows....
; it remains the second most popular variety of Emacs, after GNU Emacs.

Other modern forks and clones

Many other derivatives of the GNU Emacs have emerged, such as a Japanese version for MS Windows called Meadow
Meadow (programming)

Meadow is an open source computer programming project to port the popular GNU Emacs text editor for Unix-based operating systems to Microsoft Windows with some added functions....
 Steve Young's fork of XEmacs called SXEmacs
SXEmacs

SXEmacs is a fork of the XEmacs text editor.It runs on many Unix-like operating system, and is notable for features such as Foreign function interface support, enhanced number types , raw string regular expression, and an implementation of William Pugh's skip lists....
, and a version which focuses on integrating with the Apple Macintosh user interface called Aquamacs
Aquamacs

Aquamacs is an Emacs text editor . Unlike the original GNU Emacs, its user interface is designed to conform with the UI standards on Macintosh computers....
.

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
Mebibyte

The Mebibyte is a standards-based binary prefix of the byte, a unit of Computer data storage. Mebibyte is abbreviated MiB.The unit prefix mebi was defined by the International Electrotechnical Commission in December 1998....
 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
    MicroEMACS

    MicroEMACS is a small, porting Emacs-like text editor originally written by Dave Conroy in 1985, and further developed and maintained by Daniel Lawrence....
    , originally written by Dave Conroy and further developed by Daniel Lawrence, which exists in many variations. The editor is used by Linus Torvalds
    Linus Torvalds

    Linus Benedict Torvalds is a Finland software engineering best known for having initiated the development of the Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator....
    .
  • mg
    Mg (editor)

    mg, originally called MicroGnuEmacs, , is a public-domain text editor that runs on Unix-like operating systems. It is based on MicroEMACS, but intended to more closely resemble GNU Emacs while still maintaining a small memory footprint and fast speed....
    , 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
    OpenBSD

    OpenBSD is a Unix-like computer operating system descended from Berkeley Software Distribution , a Unix derivative developed at the University of California, Berkeley....
    .
  • NotGNU , a small, fast, freeware implementation for DOS, Win16, Win32 and Linux by Julie Melbin.
  • JOVE
    JOVE

    JOVE is an open-source, Emacs-like text editor, primarily intended for Unix-like operating systems. It also supports MS-DOS and Microsoft Windows....
     (Jonathan's Own Version of Emacs), a non-programmable Emacs implementation for UNIX-like
    Unix-like

    A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
     systems by Jonathan Payne.
  • Freemacs
    Freemacs

    Freemacs is a small, programmable computer text editor for MS-DOS with some degree of compatibility with Emacs for DOS. Written by Russ Nelson and later maintained by Jim Hall , Freemacs is currently distributed under the GPL in the FreeDOS project....
    , a DOS
    DOS

    DOS, short for "Disk Operating System", is a shorthand term for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions Windows 95, Windows 98, and Windows Me....
     version with an extension language based on text macro expansion, all within the original 64 KiB
    Kibibyte

    A kibibyte is a unit of information or computer storage, established by the International Electrotechnical Commission in 2000. Its symbol is KiB....
     flat memory limit.
  • MINCE (MINCE Is Not Complete Emacs), a version for CP/M from Mark of the Unicorn
    Mark of the Unicorn

    Mark of the Unicorn is a music-related computer software and Computer hardware supplier. It is based in Cambridge, Massachusetts and has created music software since 1984....
    . MINCE evolved into Final Word, which eventually became the Sprint
    Sprint (word processor)

    Sprint was a powerful and programmable text-based word processor for DOS, first published by Borland in 1987.__FORCETOC__...
     word processor from Borland.
  • Zile
    Zile (editor)

    Zile is a UNIX text editor. It was conceived as a small clone of the popular Emacs text editor. The goal was to write an editor that is as close to Emacs as possible....
  • Climacs, an Emacs-variant implemented in Common Lisp
    Common Lisp

    Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in American National Standards Institute standard document Information Technology - Programming Language - Common Lisp, formerly X3.226-1994 ....
     and more influenced by Zmacs
    Zmacs

    Zmacs is one of the many variants of the Emacs text editor. Zmacs was written for the MIT Lisp machine and runs on its descendants . Zmacs is written in Lisp Machine Lisp ....
     than GNU Emacs.
  • Yi
    Yi (editor)

    Yi is a text editor written and extensible in Haskell . The goal of Yi is to provide a flexible, powerful and correct editor core dynamically Scripting language in Haskell....
    , an editor written and extensible in Haskell
    Haskell (programming language)

    Haskell is a standardized, purely functional programming language with non-strict programming language, named after logician Haskell Curry. The goals of the language are described as:...
     having an emulation mode for Emacs.
  • QEmacs , small editor by Fabrice Bellard
    Fabrice Bellard

    Fabrice Bellard is a computer programmer who is best known as the founder of FFmpeg and project leader for QEMU. He also developed quite a number of other programs, ranging from 3D computer graphics graphics to a compact C compiler, the Tiny C Compiler ....
     with UTF8 support and support for fast editing of large files (hundreds of MiB).


Licensing


The terms of the GNU General Public License
GNU General Public License

The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
 (GPL) make Emacs source code, including both the C and Emacs Lisp components, freely available for examination, modification, and redistribution.

For GNU Emacs (and GNU packages in general), it remains policy to accept significant code contributions only if the copyright
Copyright

Copyright is a form of intellectual property which gives the creator of an original work exclusive rights for a certain time period in relation to that work, including its publication, distribution and adaptation; after which time the work is said to enter the public domain....
 holder executes a suitable disclaimer or assignment of their copyright interest to the Free Software Foundation
Free Software Foundation

The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to distribute and modify computer software without restriction....
, although one exception to this policy occurred in the case of MULE
Mule

In its common modern meaning, a mule is the offspring of a male donkey and a female horse.Mules are classified as an F1 hybrid.The term "mule" was formerly applied to the infertile offspring of any two creatures of different species....
 (MULtilingual Extension, which handles Unicode
Unicode

Unicode is a computing industry standard allowing computers to consistently represent and manipulate Character expressed in most of the world's writing systems....
 and more advanced methods of dealing with other languages' scripts) code since the copyright holder is the Japanese government and copyright assignment was not possible. This does not apply to extremely minor code contributions of less than 10 lines or bug fixes. This policy is in place so that FSF can defend the software in court if its copyleft
Copyleft

File:Copyleft.svgCopyleft is a Word play on the word copyright to describe the practice of using copyright law to remove restrictions on distributing copies and modified versions of a work for others and requiring that the same freedoms be preserved in modified versions....
 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. Attorney Mark A. Fischer
Mark A. Fischer

Mark A. Fischer is a leading new media and entertainment lawyer, and renowned expert on copyright law. He was the attorney who worked with Richard Stallman in drafting the first the first open source license, the GNU Emacs license for Stallman's Free Software Foundation....
 worked to draft the original GNU Emacs license with Richard Stallman in 1985. 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
GNU Manifesto

The GNU Manifesto was written by Richard Stallman and published in March 1985 in Dr. Dobb's Journal as an explanation and definition of the goals of the GNU Project, and to call for participation and support....
. 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
GNU Free Documentation License

The GNU Free Documentation License is a copyleft license for free documentation, designed by the Free Software Foundation for the GNU Project....
 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
Word processor

A word processor is a computer Application software used for the production of any sort of printable material.Word processor may also refer to an obsolete type of stand-alone office machine, popular in the 1970s and 80s, combining the keyboard text-entry and printing functions of an electric typewriter with a dedicated computer for th...
; it concentrates on manipulating pieces of text, rather than manipulating the typeface
Typeface

In typography, a typeface is a set of one or more fonts, in one or more sizes, designed with stylistic unity, each comprising a coordinated set of glyphs....
 (the "font") of the characters or printing documents (though Emacs can do these as well). Emacs provides commands to manipulate words and paragraph
Paragraph

A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. The start of a paragraph is indicated by beginning on a new line....
s (deleting them, moving them, moving through them, and so forth), syntax highlighting
Syntax highlighting

Syntax highlighting is a feature of some text editors that displays text—especially source code—in different colors and typefaces according to the category of terms....
 for making source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 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.

Customizable


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
Lisp programming language

Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older....
 known as Emacs Lisp
Emacs Lisp

Emacs Lisp is a dialect of the Lisp programming language used by the GNU Emacs and XEmacs text editors . It is used for implementing most of the editing functionality built into Emacs, the remainder being written in C ....
. This unique and unusual design provides many of the features found in Emacs. In this Lisp environment, variable
Variable

A variable is a symbol that stands for a value that may vary; the term usually occurs in opposition to constant, which is a symbol for a non-varying value, i.e....
s and even entire functions
Subroutine

In computer science, a subroutine or subprogram is a portion of computer code within a larger computer program, which performs a specific task and is relatively independent of the remaining code....
 can be modified without having to recompile or even restart the editor.

Users have three primary ways of customizing Emacs:

  1. 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.
  2. 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.
  3. 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
    Binding (computer science)

    In computer science, binding is the creation of a simple reference to something that is larger and more complicated and used frequently. The simple reference can be used instead of having to repeat the larger thing....
     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.


Extensible


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
Internet

The Internet is a global network of interconnected computers, enabling users to share information along multiple channels. Typically, a computer that connects to the Internet can access information from a vast array of available server and other computers by moving information from them to the computer's local memory....
. Emacs can be used as an Integrated Development Environment
Integrated development environment

An integrated development environment also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development....
 (IDE), allowing programmers to edit, compile
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
, and debug
Debugging

Debugging is a methodical process of finding and reducing the number of computer bugs, or defects, in a computer program or a piece of electronic hardware thus making it behave as expected....
 their code within a single interface. Other libraries perform more unusual functions. A few examples include:

  • AUCTeX
    AUCTeX

    AUCTEX is an extensible package for writing and formatting TeX files in GNU Emacs and XEmacs.It provides the most extensive LaTeX editing support available for a general purpose editor....
    , a suite of extensions that facilate the creation of TeX
    TeX

    TeX is a typesetting system designed and mostly written by Donald Knuth. Together with the METAFONT language for font description and the Computer Modern typefaces, it was designed with two main goals in mind: to allow anybody to produce high-quality books using a reasonable amount of effort, and to provide a system that would give the exact...
     and LaTeX
    LaTeX

    LaTeX is a document markup language and Word processor for the TeX typesetting program. Within the typesetting system, its name is styled as ....
     documents
  • Calc, a powerful RPN
    Reverse Polish notation

    Reverse Polish notation by analogy with the related Polish notation, a prefix notation introduced in 1920 by the Poland mathematician Jan Lukasiewicz, is a mathematical notation wherein every operator follows all of its operands....
     numerical calculator
    Calculator

    A calculator is a device for performing mathematical calculations, distinguished from a computer by having a limited problem solving ability and an interface optimized for interactive calculation rather than programming....
  • Calendar-mode, for keeping appointment calendars and diaries
  • Disassociated Press
    Disassociated Press

    Disassociated Press, or The Disassociated Press, is a common spoof on The Associated Press used by satirists to depict a fictitious news organization....
    , a Racter
    Racter

    Racter was an artificial intelligence computer program that generated English language prose at random. The name of the program is short for raconteur....
    -like text generator.
  • Dunnet
    Dunnet (game)

    Dunnet is a Text adventure games written by Ron Schnell in 1983. The game enjoys certain popularity because since 1992 it is part of the default packages in many of the Emacs versions....
    , a text adventure
    Interactive fiction

    Interactive fiction, often abbreviated IF, describes Computer software simulating environments in which players use text Command to control Player character and influence the environment....
  • Ediff
    Ediff

    Ediff is a tool available in Emacs for interactively creating and applying diff files without ever having to see their contents. Written in Emacs Lisp by Michael Kifer, the program is free software and was based on the capabilities of Emerge -- a similar tool that interactively merges two or more modified files....
    , for working with diff
    Diff

    In computing, diff is a file comparison utility that outputs the differences between two files, or the changes made to a current file by comparing it to a former version of the same file....
     files interactively.
  • Emerge, for comparing files and combining them
  • Emacs/W3
    Emacs/W3

    Emacs/W3 is a web browser for the GNU Emacs text editor, written primarily by William M. Perry and entirely in GNU Emacs Lisp. Like lynx , links , elinks, and w3m, it is primarily text-based....
    , a web browser
    Web browser

    A Web browser is a application software which enables a user to display and interact with text, images, videos, music, games and other information typically located on a Web page at a website on the World Wide Web or a local area network....
  • ERC
    ERC (software)

    ERC is a software package written in Emacs Lisp that enables the Emacs editor to act as an Internet Relay Chat client.External links...
    , an IRC
    Internet Relay Chat

    Internet Relay Chat is a form of real-time Internet text messaging or synchronous conferencing. It is mainly designed for Many-to-many in discussion forums, called #Channels, but also allows One-to-one via instant messaging, as well as chat and data transfers via Direct Client-to-Client....
     client
  • Gnus
    Gnus

    Gnus is a message reader running under GNU GNU Emacs and XEmacs. It supports reading and composing both Usenet and e-mail.Gnus blurs the distinction between news and e-mail, treating them both as "articles" that come from different sources....
    , a full-featured newsreader
    News client

    A newsreader is an application software that reads articles on Usenet , either directly from the news server's disks or via the Network News Transfer Protocol ....
     and email client (and early evidence for Zawinski's Law, along with Rmail and VM)
  • VM (or 'View Mail'), a full-featured email client
  • MULE
    Mule

    In its common modern meaning, a mule is the offspring of a male donkey and a female horse.Mules are classified as an F1 hybrid.The term "mule" was formerly applied to the infertile offspring of any two creatures of different species....
    , MultiLingual extensions to Emacs, allowing editing text written in multiple languages, somewhat analogous to Unicode
    Unicode

    Unicode is a computing industry standard allowing computers to consistently represent and manipulate Character expressed in most of the world's writing systems....
  • Info
    Texinfo

    Texinfo is a typesetting syntax used for generating documentation in both on-line and printed form with a single source file. It is implemented by a free software computer program of the same name, created and made available by the GNU Project....
    , an online help-browser
  • Planner, a personal information manager
  • SES, a spreadsheet
    Spreadsheet

    A spreadsheet is a computer application that simulates a paper worksheet. It displays multiple cells that together make up a grid consisting of rows and columns, each cell containing either alphanumeric text or numeric values....


Many third-party libraries exist on the Internet; for example, there is a library called for . There is even a Usenet
Usenet

Usenet, a portmanteau of "user" and "network", is a worldwide distributed Internet discussion system. It evolved from the general purpose UUCP architecture of the same name....
 newsgroup
Newsgroup

A newsgroup is a repository usually within the Usenet system, for messages Posting style from many users in different locations. The term may be confusing to some, because it is usually a discussion group....
, [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.

Performance


The downside to Emacs' Lisp-based design comes in the form of a performance overhead resulting from loading and interpreting
Interpreter (computing)

In computer science, an interpreter normally means a computer program that execution , i.e. performs, instructions written in a programming language....
 the Lisp code. On the systems in which Emacs was first implemented, Emacs often ran noticeably slower than rival text editors. Several joke backronym
Backronym

A backronym is a reverse Acronym and initialism, a phrase constructed after the fact to make an existing word or words into an acronym.Backronyms may be invented with serious or humorous intent, or may be a type of false or folk etymology....
s allude to this: Eight Megabyte
Megabyte

Megabyte is a SI prefix-multiple of the unit byte for digital information computer storage or transmission and is equal to 106 bytes....
s And Constantly Swapping
Paging

In computer operating systems that have their main memory divided into page , paging is a transfer of pages between main memory and an auxiliary store, such as hard disk drive....
 (from the days when eight megabytes was a lot of memory), Emacs Makes A Computer Slow, Eventually Malloc
Malloc

In computing, malloc is a subroutine provided in the C and C++'s standard library for performing dynamic memory allocation....
s 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
Esc key

The Esc key is a key labeled Esc or Escape that is used to generate the ASCII Escape character , the character code traditionally used to initiate an escape sequence....
 Meta
Meta key

The Meta key was a special key on old Massachusetts Institute of Technology computer keyboards, such as the Space-cadet keyboard. Sun Microsystems keyboards continue to include a Meta key, marked as a solid diamond....
 Alt
Alt key

The Alt key on a computer keyboard is used to change the function of other pressed keys. Thus, the Alt key is a modifier key, used in a similar fashion to the Shift key....
 Control
Control key

In computing, a Control key is a modifier key which, when pressed in conjunction with another key, will perform a special operation ; similar to the Shift key, the Control key rarely performs any function when pressed by itself....
 Shift
Shift key

The shift key is a modifier key on a alphanumeric keyboard, used to type majuscule and other alternate "upper" characters. There are typically two shift keys, on the left and right sides of the row below the home row....
.

Platforms

Emacs has become one of the most ported
Porting

In computer science, porting is the process of adapting software so that an executable Computer program can be created for a computing environment that is different from the one for which it was originally designed ....
 non-trivial computer programs. It runs on a wide variety of operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s, including most Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
-like systems (GNU/Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
, the various BSDs
Berkeley Software Distribution

Berkeley Software Distribution is the Unix operating system derivative developed and distributed by the Computer Systems Research Group of the University of California, Berkeley, from 1977 to 1995....
, Solaris, AIX
AIX operating system

AIX is the name given to a series of Proprietary software operating systems sold by IBM for several of its computer system platforms, based on UNIX System V with 4.3BSD-compatible command and programming interface extensions....
, IRIX
IRIX

IRIX is a computer operating system developed by Silicon Graphics, Inc. to run natively on their 32- and 64-bit MIPS architecture workstations and servers....
, Mac OS X
Mac OS X

Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
, etc.), MS-DOS
MS-DOS

MS-DOS is an operating system commercialized by Microsoft. It was the most commonly used member of the DOS family of operating systems and was the main operating system for personal computers during the 1980s....
, Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 and OpenVMS
OpenVMS

OpenVMS , previously known as VAX-11/VMS, VAX/VMS or VMS, is the name of a high-end computer server operating system that runs on the VAX and DEC Alpha families of computers, developed by Digital Equipment Corporation of Maynard, Massachusetts, Massachusetts , and most recently on Hewlett-Packard systems built around the In...
. Unix systems, both free and proprietary, frequently provide Emacs bundled with the operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
.

Emacs runs both on text terminals and in graphical user interface
Graphical user interface

A graphical user interface is a type of user interface which allows people to human-computer interaction such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment....
 (GUI) environments. On Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
-like operating systems, Emacs uses the X Window System
X Window System

The X Window System is a computing software system and network protocol that provides a graphical user interface for networked computers. It implements the X Window System protocols and architecture and provides windowing system on raster graphics Visual display units and manages Keyboard and pointing device control functions....
 to produce its GUI, either directly or using a "widget toolkit" such as Motif
Motif (widget toolkit)

In computing, Motif refers to both a graphical user interface specification and the widget toolkit for building applications that follow that specification under the X Window System on Unix and other POSIX-compliant systems....
, LessTif
LessTif

LessTif is a free software reimplementation or Clone of the Motif computer programming toolkit.LessTif is developed by the Hungry Programmers....
, or GTK+
GTK+

GTK+, or The GIMP Toolkit, is a cross-platform widget toolkit for creating graphical user interfaces. It is one of the most popular toolkits for the X Window System, along with Qt ....
. Emacs can also use the native graphical systems of Mac OS X (using the Carbon
Carbon (API)

Carbon is one of Apple Inc.'s procedural Application programming interfaces for the Apple Macintosh operating system. It permits a good degree of forward and backward compatibility between source code written to run on the older and now dated Mac OS history , and the newer Mac OS X....
 or Cocoa
Cocoa (API)

Cocoa is one of Apple Inc.'s native object-oriented application program environment for the Mac OS X operating system. It is one of four major Application programming interfaces available for Mac OS X; the others are Carbon , POSIX , and Java platform....
 interfaces) and Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
. The graphical interface provides menubars, toolbar
Toolbar

In a graphical user interface on a computer monitor a toolbar is a panel on which onscreen buttons, icons, menus or other input or output elements are placed....
s, scrollbar
Scrollbar

A scrollbar is a graphical object in a GUI with which continuous text, pictures or anything else can be Scrolling including time in video applications, i.e., viewed even if it does not fit into the space in a computer display, window , or viewport....
s, and context menu
Context menu

A context menu is a menu in a graphical user interface that appears upon user interaction, such as a Right click#Common mouse operations. A context menu offers a limited set of choices that are available in the current state, or context, of the operating system or application....
s.

Editing modes

Emacs adapts its behavior to the types of text it edits by entering editing modes called "major modes". Defined major modes exist for ordinary text files, source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 for many programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
s, HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
 documents, TeX
TeX

TeX is a typesetting system designed and mostly written by Donald Knuth. Together with the METAFONT language for font description and the Computer Modern typefaces, it was designed with two main goals in mind: to allow anybody to produce high-quality books using a reasonable amount of effort, and to provide a system that would give the exact...
 and LaTeX
LaTeX

LaTeX is a document markup language and Word processor for the TeX typesetting program. Within the typesetting system, its name is styled as ....
 documents, and 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
    Syntax highlighting

    Syntax highlighting is a feature of some text editors that displays text—especially source code—in different colors and typefaces according to the category of terms....
     (called "font lock" in Emacs): using different fonts or colors to display keyword
    Keyword (computer programming)

    In computer programming, a keyword is a word or identifier that has a particular meaning to the programming language. The meaning of keywords ? and, indeed, the meaning of the notion of keyword ? differs widely from language to language....
    s, comment
    Comment

    A comment is generally a verbal or written remark often related to an added piece of information, or an observation or statement. These are usually marked with an abbreviation, such as "obs." or "Nota Bene"....
    s, 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 insert closing tags.


Programmers can add extra features by using "minor modes". While a 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 style
Indent style

In computer programming, an indent style is a convention governing the indentation of block s of code to convey the program's structure. This article largely addresses the C and its descendants, but can be applied to most other programming languages ....
s. Or, they 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
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
 document with embedded CSS
CSS

CSS may stand for:...
 and JavaScript
JavaScript

JavaScript is a scripting language widely used for client-side web development. It was the originating Programming language dialect of the ECMAScript standard....
.

The SLIME
Slime

Slime may refer to:* Slime , a regular feature of several of Nickelodeon's television shows.* Gunge, a British colloquial name for a runny substance similar to paint, that is often featured in game shows....
 major mode extends Emacs into a development environment for Common Lisp
Common Lisp

Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in American National Standards Institute standard document Information Technology - Programming Language - Common Lisp, formerly X3.226-1994 ....
. 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, an data inspector and a debugger.

Self-documenting

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-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 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
Lisp programming language

Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older....
 and Java.

Further, 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
Tutorial

A tutorial is one method of transferring knowledge and may be used as a part of learning. More interactivity and specific than a book or a lecture; a tutorial seeks to teach by example and supply the information to complete a certain task....
. When Emacs starts with no file to edit, it displays instructions for performing simple editing commands and invoking the tutorial.

Manuals

Apart from the built-in documentation, Emacs has an unusually long, detailed and well-written manual
User guide

A user guide, also commonly known as a manual, is a technical communication document intended to give assistance to people using a particular system....
. 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
Texinfo

Texinfo is a typesetting syntax used for generating documentation in both on-line and printed form with a single source file. It is implemented by a free software computer program of the same name, created and made available by the GNU Project....
 browser. Two other manuals, the Emacs Lisp Reference Manual by Bil 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
Free Software Foundation

The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to distribute and modify computer software without restriction....
. 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.

Internationalization

Emacs supports the editing of text written in many human languages
Language

A language is a form of symbol communication in which elements are combined to represents something other than themselves. Language can also refer to the use of such systems as a general phenomenon....
. 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
Ispell

Ispell is a spelling checker for Unix that supports most Western languages. It offers several interfaces, including a programmatic interface for use by editors such as emacs....
. Many encoding systems
Character encoding

A character encoding system consists of a code that pairs a sequence of character from a given character set with something else, such as a sequence of natural numbers, octet or electrical pulses, in order to facilitate the transmission of data through telecommunication networks and/or Computer data storage of Character in compute...
, including UTF-8
UTF-8

UTF-8 is a Variable-width encoding character encoding for Unicode. It is able to represent any character in the Unicode standard, yet the initial encoding of byte codes and character assignments for UTF-8 is backward compatibility with ASCII....
, are supported. Emacs 22 has full Unicode support; however, it uses Emacs-specific encoding internally, necessitating conversion upon load and save. UTF-8
UTF-8

UTF-8 is a Variable-width encoding character encoding for Unicode. It is able to represent any character in the Unicode standard, yet the initial encoding of byte codes and character assignments for UTF-8 is backward compatibility with ASCII....
 will become the Emacs-internal encoding in Emacs 23.

However, 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
Emacspeak

Emacspeak is a Free software screen reader for Emacs which is written in C programming language, Emacs Lisp and Tcl and developed principally by T....
 which allows the editor to be used through audio feedback only.

Using Emacs


Commands

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
Backspace

Backspace is the keyboard key that originally pushed the typewriter carriage one position backwards, and in modern computer displays moves the cursor one position backwards, deletes the preceding character, and shifts back the text after it by one position....
 deletes text, and so forth. Users invoke other commands with modified keystrokes
Modifier key

In computing, a modifier key is a special key on a computer keyboard that modifies the normal action of another key when the two are pressed in combination....
: pressing the control key
Control key

In computing, a Control key is a modifier key which, when pressed in conjunction with another key, will perform a special operation ; similar to the Shift key, the Control key rarely performs any function when pressed by itself....
 and/or the meta key
Meta key

The Meta key was a special key on old Massachusetts Institute of Technology computer keyboards, such as the Space-cadet keyboard. Sun Microsystems keyboards continue to include a Meta key, marked as a solid diamond....
/alt key
Alt key

The Alt key on a computer keyboard is used to change the function of other pressed keys. Thus, the Alt key is a modifier key, used in a similar fashion to the Shift 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 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, which allows binding more commands 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
Microsoft Visual Studio

Microsoft Visual Studio is an integrated development environment from Microsoft. It can be used to develop Console application and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all platforms supported by Microsoft W...
, and is even used to some extent by some consumer word processors such as Microsoft Word
Microsoft Word

Microsoft Word is Microsoft's word processor computer software. It was first released in 1983 under the name Multi-Tool Word for Xenix systems....
.

Some Emacs commands work by invoking an external program (such as ispell
Ispell

Ispell is a spelling checker for Unix that supports most Western languages. It offers several interfaces, including a programmatic interface for use by editors such as emacs....
 for spell-checking or gcc
GNU Compiler Collection

The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain....
 for program compilation), parsing the program's output, and displaying the result in Emacs.

Minibuffer

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
Command line completion

Command line completion is a common feature of command line interpreters, in which the program automatically fills in partially typed commands....
 is usually available using the tab and space keys.

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 file
Text file

A text file is a kind of computer file that is structured as a sequence of line . A text file exists within a computer file system. The end of a text file is often denoted by placing one or more special characters, known as an end-of-file marker, after the last line in a text file....
s, 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 can be displayed at a time. This has many uses. For example, one section can be used to display the source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 of a program, while another displays the results from compiling the program. In graphical environments, Emacs can also launch multiple graphical-environment windows
Window (computing)

In computing, a window is a visual area, usually rectangular in shape, containing some kind of user interface, displaying the output of and allowing input for one of a number of simultaneously running computer processes....
, known as "frames" in the context of Emacs.

Emacs Pinky

Because of Emacs' dependence on the modifier keys, and in particular because of how many keyboard-users press control keys with the little finger
Little finger

The little finger, often called the pinky in American English and pinkie in Scottish English , is the most Anatomical terms of location#Relative directions in the limbs and usually smallest finger of the human hand, opposite the thumb, next to the ring finger....
 ("pinky"), heavy Emacs users have experienced pain in their pinky fingers (see repetitive strain injury
Repetitive strain injury

Repetitive strain injury , also known as Cumulative Trauma Disorder , occupational overuse syndrome, non-specific arm pain or work related upper limb disorder , is the most recent manifestation of illness concepts that link use of the arm to injury or disease....
). This has been dubbed the "Emacs Pinky", and vi
Vi

vi is a family of screen-oriented text editors which share common characteristics, such as methods of invocation from the operating system command interpreter, and characteristic user interface features....
 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, which puts the control key back where it was on the pre-IBM-style PC keyboards for which Emacs key combinations were chosen (usually the leftmost key on the middle row of characters). 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
Kinesis (keyboard)

The Kinesis line of ergonomic computer keyboards are an alternative to the traditional keyboard design. Most widely known among these are the contoured Advantage line, which feature recessed keys in two bucket-like hollows which allow the fingers to reach keys with less effort as well as a central array of modifiers such as...
, which reduces the strain by moving the modifier keys so that they are in a position to be easily pushed by the thumb
Thumb

The thumb is the Human_anatomical_terms#Anatomical_directions-most finger of the hand. The English adjective for thumb is pollical....
, or Microsoft Natural keyboard
Microsoft Natural keyboard

The Microsoft Natural Keyboard is a computer keyboard that was introduced by Microsoft in 1994. The computer keyboard was a split keyboard with each half of the keyboard separated and tilted upwards and down from the center of the keyboard....
, which has large modifier keys placed symmetrically on both sides of the keyboard so that they can be pressed with the palm.

See also


  • Comparison of text editors
    Comparison of text editors

    This article provides a basic feature comparison for several text editors. Additional feature details are available from the :Category:Text editor features and from the individual products' articles....
  • Comparison of HTML editors
    Comparison of HTML editors

    The following tables compare general and technical information for a number of HTML editors.This article is not all-inclusive or necessarily up-to-date....
  • Conkeror
    Conkeror

    Conkeror is a free, keyboard-driven, Mozilla-based web browser . It borrows many key bindings from GNU Emacs but has also taken much inspiration from vi and Vimperator....
    , a Mozilla
    Mozilla

    Mozilla was the official, public, original name of Mozilla Application Suite by the Mozilla Foundation, currently known as SeaMonkey internet suite....
    -based web browser inspired by Emacs
  • GNU TeXmacs
    GNU TeXmacs

    GNU TeXmacs is a Free software scientific word processor component of the GNU project, which was "inspired" by both TeX and GNU Emacs, but shares no code with either of the two programs it is named after....
  • Space-cadet keyboard
    Space-cadet keyboard

    The Space-cadet keyboard is a device used on MIT Lisp machines and designed by Tom Knight , which inspired several still-current jargon terms in the field of computer science and influenced the design of Emacs....
  • List of text editors
    List of text editors

    The following is a list of text editors. For a list of outliners, see that article's external links....
  • List of Unix programs
    List of Unix programs

    This is a list of UNIX utilities as specified by IEEE Std 1003.1-2004, which is part of the Single UNIX Specification .These utilities can be found on UNIX Operating systems and most UNIX-like operating systems....


Bibliography

[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-447.pdf PDF] [ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-519A.pdf PDF]



External links


  • – community site dedicated to documenting and discussing Emacs and distributing add-ons
  • (from the Free Software Foundation
    Free Software Foundation

    The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to distribute and modify computer software without restriction....
    ).
  • - Guide for installing and configuring Emacs using the Windows operating system
  • , a version of Emacs for Mac OS X
    Mac OS X

    Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
    .
  • [irc://irc.gnu.org/emacs #emacs] IRC channel