Get Our Extension

Emacs

From Wikipedia, in a visual modern way
Emacs
Original author(s)David A. Moon,
Guy L. Steele Jr.
Developer(s)Various free/libre software developers, including volunteers and commercial developers
Initial release1976; 47 years ago (1976)[1][2]
Written inLisp, C
Operating systemCross-platform
TypeText editor
Websitewww.gnu.org/software/emacs/ Edit this on Wikidata

Emacs /ˈmæks/, originally named EMACS (an acronym for "Editor MACroS"),[3][4][5] is a family of text editors that are characterized by their extensibility.[6] The manual for the most widely used variant,[7] GNU Emacs, describes it as "the extensible, customizable, self-documenting, real-time display editor".[8] Development of the first Emacs began in the mid-1970s, and work on its direct descendant, GNU Emacs, continues actively; the latest version is 28.2, released in September 2022.

Emacs has over 10,000 built-in commands and its user interface allows the user to combine these commands into macros to automate work. Implementations of Emacs typically feature a dialect of the Lisp programming language, allowing users and developers to write new commands and applications for the editor. Extensions have been written to, among other things, manage files, remote access,[9] e-mail, outlines, multimedia, git integration, and RSS feeds,[10] as well as implementations of ELIZA, Pong, Conway's Life, Snake, Dunnet, and Tetris.[11]

The original EMACS was written in 1976 by David A. Moon and Guy L. Steele Jr. as a set of Editor MACroS for the TECO editor.[2][3][4][5][12] It was inspired by the ideas of the TECO-macro editors TECMAC and TMACS.[13]

The most popular, and most ported, version of Emacs is GNU Emacs, which was created by Richard Stallman for the GNU Project.[14] XEmacs is a variant that branched from GNU Emacs in 1991. GNU Emacs and XEmacs use similar Lisp dialects and are, for the most part, compatible with each other. XEmacs development is inactive.

Emacs is, along with vi, one of the two main contenders in the traditional editor wars of Unix culture. Emacs is among the oldest free and open source projects still under development.[15]

Discover more about Emacs related topics

Extensibility

Extensibility

Extensibility is a software engineering and systems design principle that provides for future growth. Extensibility is a measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be through the addition of new functionality or through modification of existing functionality. The principle provides for enhancements without impairing existing system functions.

GNU Emacs

GNU Emacs

GNU Emacs is a free software text editor. It was created by GNU Project founder Richard Stallman, based on the Emacs editor developed for Unix operating systems. GNU Emacs has been a central component of the GNU project and a flagship project of the free software movement. Its name has occasionally been shortened to GNUMACS. The tag line for GNU Emacs is "the extensible self-documenting text editor".

Dired

Dired

Dired is a computer program for editing file system directories. It typically runs inside the Emacs text editor as a specialized mode, though standalone versions have been written. Dired was the first file manager, or visual editor of file system information. The first version of Dired was written as a stand-alone program independently in 1972 by Dave Lebling at Project MAC, and circa 1974 by Stan Kugell at the Stanford Artificial Intelligence Laboratory (SAIL). It was incorporated into GNU Emacs from the earliest versions, and re-implemented in C and C++ on other operating systems.

Gnus

Gnus

Gnus, or Gnus Network User Services, is a message reader which is part of GNU Emacs. It supports reading and composing both e-mail and news and can also act as an RSS reader, web processor, and directory browser for both local and remote filesystems.

EMMS (media player)

EMMS (media player)

EMMS is media player software for Emacs. It is written in Emacs Lisp. The name could possibly echo XMMS. It may be derived from an earlier Emacs-based player called mp3-player.

ELIZA

ELIZA

ELIZA is an early natural language processing computer program created from 1964 to 1966 at the MIT Artificial Intelligence Laboratory by Joseph Weizenbaum. Created to demonstrate the superficiality of communication between humans and machines, Eliza simulated conversation by using a "pattern matching" and substitution methodology that gave users an illusion of understanding on the part of the program, but had no built in framework for contextualizing events. Directives on how to interact were provided by "scripts", written originally in MAD-Slip, which allowed ELIZA to process user inputs and engage in discourse following the rules and directions of the script. The most famous script, DOCTOR, simulated a psychotherapist of the Rogerian school, and used rules, dictated in the script, to respond with non-directional questions to user inputs. As such, ELIZA was one of the first chatterbots and one of the first programs capable of attempting the Turing test.

Conway's Game of Life

Conway's Game of Life

The Game of Life, also known simply as Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970. It is a zero-player game, meaning that its evolution is determined by its initial state, requiring no further input. One interacts with the Game of Life by creating an initial configuration and observing how it evolves. It is Turing complete and can simulate a universal constructor or any other Turing machine.

Dunnet (video game)

Dunnet (video game)

Dunnet is a surreal, cyberpunk text adventure written by Ron Schnell, based on a game he wrote in 1982. The name is derived from the first three letters of dungeon and the last three letters of ARPANET. It was first written in Maclisp for the DECSYSTEM-20, then ported to Emacs Lisp in 1992. Since 1994 the game has shipped with GNU Emacs; it also has been included with XEmacs.

David A. Moon

David A. Moon

David A. Moon is a programmer and computer scientist, known for his work on the Lisp programming language, as co-author of the Emacs text editor, as the inventor of ephemeral garbage collection, and as one of the designers of the Dylan programming language. Guy L. Steele Jr. and Richard P. Gabriel (1993) name him as a leader of the Common Lisp movement and describe him as "a seductively powerful thinker, quiet and often insulting, whose arguments are almost impossible to refute".

GNU Project

GNU Project

The GNU Project is a free software, mass collaboration project announced by Richard Stallman on September 27, 1983. Its goal is to give computer users freedom and control in their use of their computers and computing devices by collaboratively developing and publishing software that gives everyone the rights to freely run the software, copy and distribute it, study it, and modify it. GNU software grants these rights in its license.

Fork (software development)

Fork (software development)

In software engineering, a project fork happens when developers take a copy of source code from one software package and start independent development on it, creating a distinct and separate piece of software. The term often implies not merely a development branch, but also a split in the developer community; as such, it is a form of schism. Grounds for forking are varying user preferences and stagnated or discontinued development of the original software.

Editor war

Editor war

The editor war is the rivalry between users of the Emacs and vi text editors. The rivalry has become an enduring part of hacker culture and the free software community.

History

Emacs was started by Guy L. Steele Jr. as a project to unify the many divergent TECO command sets and key bindings at MIT[4]
Emacs was started by Guy L. Steele Jr. as a project to unify the many divergent TECO command sets and key bindings at MIT[4]
David A. Moon
David A. Moon
Emacs' interface was influenced by the design of the space-cadet keyboard, which sought to enable users to type as many different kinds of input as possible.[16]
Emacs' interface was influenced by the design of the space-cadet keyboard, which sought to enable users to type as many different kinds of input as possible.[16]

Emacs development began during the 1970s at the MIT AI Lab, whose PDP-6 and PDP-10 computers used the Incompatible Timesharing System (ITS) operating system that featured a default line editor known as Tape Editor and Corrector (TECO). Unlike most modern text editors, TECO used separate modes in which the user would either add text, edit existing text, or display the document. One could not place characters directly into a document by typing them into TECO, but would instead enter a character ('i') in the TECO command language telling it to switch to input mode, enter the required characters, during which time the edited text was not displayed on the screen, and finally enter a character () to switch the editor back to command mode. (A similar technique was used to allow overtyping.) This behavior is similar to that of the program ed.

By the 1970s, TECO was already an old program, initially released in 1962. Richard Stallman visited the Stanford AI Lab in 1976[17] and saw the lab's E editor, written by Fred Wright.[18] He was impressed by the editor's intuitive WYSIWYG (What You See Is What You Get) behavior, which has since become the default behavior of most modern text editors. He returned to MIT where Carl Mikkelsen, a hacker at the AI Lab, had added to TECO a combined display/editing mode called Control-R that allowed the screen display to be updated each time the user entered a keystroke. Stallman reimplemented this mode to run efficiently and then added a macro feature to the TECO display-editing mode that allowed the user to redefine any keystroke to run a TECO program.[5]

E had another feature that TECO lacked: random-access editing. TECO was a page-sequential editor that was designed for editing paper tape on the PDP-1 at a time when computer memory was generally small due to cost, and it was a feature of TECO that allowed editing on only one page at a time sequentially in the order of the pages in the file. Instead of adopting E's approach of structuring the file for page-random access on disk, Stallman modified TECO to handle large buffers more efficiently and changed its file-management method to read, edit, and write the entire file as a single buffer. Almost all modern editors use this approach.

The new version of TECO quickly became popular at the AI Lab and soon accumulated a large collection of custom macros whose names often ended in MAC or MACS, which stood for macro. Two years later, Guy Steele took on the project of unifying the diverse macros into a single set.[19] Steele and Stallman's finished implementation included facilities for extending and documenting the new macro set.[5] The resulting system was called EMACS, which stood for Editing MACroS or, alternatively, E with MACroS. Stallman picked the name Emacs "because was not in use as an abbreviation on ITS at the time."[20] An apocryphal hacker koan alleges that the program was named after Emack & Bolio's, a popular Boston ice cream store.[21] The first operational EMACS system existed in late 1976.[22]

Stallman saw a problem in too much customization and de facto forking and set certain conditions for usage. He later wrote:[22]

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-10 running ITS. Its behavior was sufficiently different from that of TECO that it could be considered a text editor in its own right, and it quickly became the standard editing program on ITS. Mike McMahon ported Emacs from ITS to the TENEX and TOPS-20 operating systems. Other contributors to early versions of Emacs include Kent Pitman, Earl Killian, and Eugene Ciccarelli. By 1979, Emacs was the main editor used in MIT's AI lab and its Laboratory for Computer Science.[23]

Discover more about History related topics

Guy L. Steele Jr.

Guy L. Steele Jr.

Guy Lewis Steele Jr. is an American computer scientist who has played an important role in designing and documenting several computer programming languages and technical standards.

Massachusetts Institute of Technology

Massachusetts Institute of Technology

The Massachusetts Institute of Technology (MIT) is a private land-grant research university in Cambridge, Massachusetts. Established in 1861, MIT has played a key role in the development of modern technology and science, and is one of the most prestigious and highly ranked academic institutions in the world.

MIT Computer Science and Artificial Intelligence Laboratory

MIT Computer Science and Artificial Intelligence Laboratory

Computer Science and Artificial Intelligence Laboratory (CSAIL) is a research institute at the Massachusetts Institute of Technology (MIT) formed by the 2003 merger of the Laboratory for Computer Science (LCS) and the Artificial Intelligence Laboratory. Housed within the Ray and Maria Stata Center, CSAIL is the largest on-campus laboratory as measured by research scope and membership. It is part of the Schwarzman College of Computing but is also overseen by the MIT Vice President of Research.

PDP-6

PDP-6

The PDP-6, short for Programmed Data Processor model 6, is a computer developed by Digital Equipment Corporation (DEC) during 1963 and first delivered in the summer of 1964. It was an expansion of DEC's existing 18-bit systems to use a 36-bit data word, which was at that time a common word size for large machines like IBM mainframes. The system was constructed using the same germanium transistor-based System Module layout as DEC's earlier machines, like the PDP-1 and PDP-4.

PDP-10

PDP-10

Digital Equipment Corporation (DEC)'s PDP-10, later marketed as the DECsystem-10, is a mainframe computer family manufactured beginning in 1966 and discontinued in 1983. 1970s models and beyond were marketed under the DECsystem-10 name, especially as the TOPS-10 operating system became widely used.

Incompatible Timesharing System

Incompatible Timesharing System

Incompatible Timesharing System (ITS) is a time-sharing operating system developed principally by the MIT Artificial Intelligence Laboratory, with help from Project MAC. The name is the jocular complement of the MIT Compatible Time-Sharing System (CTSS).

Operating system

Operating system

An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.

Line editor

Line editor

In computing, a line editor is a text editor in which each editing command applies to one or more complete lines of text designated by the user. Line editors predate screen-based text editors and originated in an era when a computer operator typically interacted with a teleprinter, with no video display, and no ability to move a cursor interactively within a document. Line editors were also a feature of many home computers, avoiding the need for a more memory-intensive full-screen editor.

Ed (text editor)

Ed (text editor)

ed is a line editor for Unix and Unix-like operating systems. It was one of the first parts of the Unix operating system that was developed, in August 1969. It remains part of the POSIX and Open Group standards for Unix-based operating systems, alongside the more sophisticated full-screen editor vi.

Richard Stallman

Richard Stallman

Richard Matthew Stallman, also known by his initials, rms, is an American free software movement activist and programmer. He campaigns for software to be distributed in such a manner that its users have the freedom to use, study, distribute, and modify that software. Software that ensures these freedoms is termed free software. Stallman launched the GNU Project, founded the Free Software Foundation (FSF) in October 1985, developed the GNU Compiler Collection and GNU Emacs, and wrote the GNU General Public License.

Macro (computer science)

Macro (computer science)

In computer programming, a macro is a rule or pattern that specifies how a certain input should be mapped to a replacement output. Applying a macro to an input is known as macro expansion. The input and output may be a sequence of lexical tokens or characters, or a syntax tree. Character macros are supported in software applications to make it easy to invoke common command sequences. Token and tree macros are supported in some programming languages to enable code reuse or to extend the language, sometimes for domain-specific languages.

PDP-1

PDP-1

The PDP-1 is the first computer in Digital Equipment Corporation's PDP series and was first produced in 1959. It is famous for being the computer most important in the creation of hacker culture at Massachusetts Institute of Technology, BBN and elsewhere. The PDP-1 is the original hardware for playing history's first game on a minicomputer, Steve Russell's Spacewar!

Implementations

Early implementations

Zmacs, an Emacs for Lisp machines, an evolution of EINE and ZWEI
Zmacs, an Emacs for Lisp machines, an evolution of EINE and ZWEI
James Gosling wrote an Emacs-like editor to run on Unix (Gosling Emacs) in 1981
James Gosling wrote an Emacs-like editor to run on Unix (Gosling Emacs) in 1981

In the following years, programmers wrote a variety of Emacs-like editors for other computer systems. These included EINE (EINE Is Not EMACS) and ZWEI[24] (ZWEI Was EINE Initially), which were written for the Lisp machine by Mike McMahon and Daniel Weinreb, and Sine (Sine Is Not Eine),[25] which was written by Owen Theodore Anderson. Weinreb's EINE was the first Emacs written in Lisp. In 1978, Bernard Greenberg wrote Multics Emacs almost entirely in Multics Lisp at Honeywell's Cambridge Information Systems Lab. Multics Emacs was later maintained by Richard Soley, who went on to develop the NILE Emacs-like editor for the NIL Project, and by Barry Margolin. Many versions of Emacs, including GNU Emacs, would later adopt Lisp as an extension language.

James Gosling, who would later invent NeWS and the Java programming language, wrote Gosling Emacs in 1981. The first Emacs-like editor to run on Unix, Gosling Emacs was written in C and used Mocklisp, a language with Lisp-like syntax, as an extension language.

Early Ads for Computer Corporation of America's CCA EMACS (Steve Zimmerman).[26] appeared in 1984.[27] 1985 comparisons to GNU Emacs, when it came out, mentioned free vs. $2,400.[28]


GNU Emacs

GNU Emacs running in a text console
GNU Emacs running in a text console
GNU Emacs running on Microsoft Windows
GNU Emacs running on Microsoft Windows

Richard Stallman began work on GNU Emacs in 1984 to produce a free software alternative to the proprietary Gosling Emacs. GNU Emacs was initially based on Gosling Emacs, but Stallman's replacement of its Mocklisp interpreter with a true Lisp interpreter required that nearly all of its code be rewritten. This became the first program released by the nascent GNU Project. GNU Emacs is written in C and provides Emacs Lisp, also implemented in C, as an extension language. Version 13, the first public release, was made on March 20, 1985. The first widely distributed version of GNU Emacs was version 15.34, released later in 1985. Early versions of GNU Emacs were numbered as 1.x.x, with the initial digit denoting the version of the C core. The 1 was dropped after version 1.12, as it was thought that the major number would never change, and thus the numbering skipped from 1 to 13.[29] In September 2014, it was announced on the GNU emacs-devel mailing list that GNU Emacs would adopt a rapid release strategy and version numbers would increment more quickly in the future.[30]

GNU Emacs offered more features than Gosling Emacs, in particular a full-featured Lisp as its extension language, and soon replaced Gosling Emacs as the de facto Unix Emacs editor. Markus Hess exploited a security flaw in GNU Emacs' email subsystem in his 1986 cracking spree in which he gained superuser access to Unix computers.[31]

Most of GNU Emacs functionality is implemented through a scripting language called Emacs Lisp. Because about 70% of GNU Emacs is written in the Emacs Lisp extension language,[32] one only needs to port the C core which implements the Emacs Lisp interpreter. This makes porting Emacs to a new platform considerably less difficult than porting an equivalent project consisting of native code only.

GNU Emacs development was relatively closed until 1999 and was used as an example of 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 was then switched to the Bazaar DVCS. On November 11, 2014, development was moved to Git.[33]

Richard Stallman has remained the principal maintainer of GNU Emacs, but he has stepped back from the role at times. Stefan Monnier and Chong Yidong were maintainers from 2008 to 2015.[34][35] John Wiegley was named maintainer in 2015 after a meeting with Stallman at MIT.[36] As of early 2014, GNU Emacs has had 579 individual committers throughout its history.[37]

XEmacs

XEmacs 21.5 on Linux
XEmacs 21.5 on Linux

Lucid Emacs, based on an early alpha version of GNU Emacs 19, was developed beginning in 1991 by Jamie Zawinski and others at Lucid Inc. One of the best-known early forks in free software development occurred when the codebases of the two Emacs versions diverged and the separate development teams ceased efforts to merge them back into a single program.[38] Lucid Emacs has since been renamed XEmacs. Its development is currently inactive, with the most recent stable version 21.4.22 released in January 2009 (while a beta was released in 2013), while GNU Emacs has implemented many formerly XEmacs-only features.[39]

Other forks of GNU Emacs

Other notable forks include:

  • Aquamacs – based on GNU Emacs (Aquamacs 3.2 is based on GNU Emacs version 24 and Aquamacs 3.3 is based on GNU Emacs version 25) which focuses on integrating with the Apple Macintosh user interface
  • Meadow – a Japanese version for Microsoft Windows[40]

Various Emacs editors

uEmacs/Pk 4.0.15 on Linux
uEmacs/Pk 4.0.15 on Linux
The mg tiny Emacs-like editor in OpenBSD 5.3. Editing Ruby source code
The mg tiny Emacs-like editor in OpenBSD 5.3. Editing Ruby source code
JOVE running in a Debian box
JOVE running in a Debian box

In the past, projects aimed at producing small versions of Emacs proliferated. GNU Emacs was initially targeted at computers with a 32-bit flat address space and at least 1 MiB of RAM.[41] Such computers were high end workstations and minicomputers in the 1980s, and this left a need for smaller reimplementations that would run on common personal computer hardware. Today's computers have more than enough power and capacity to eliminate these restrictions, but small clones have more recently been designed to fit on software installation disks or for use on less capable hardware.[42]

Other projects aim to implement Emacs in a different dialect of Lisp or a different programming language altogether. Although not all are still actively maintained, these clones include:

  • MicroEMACS, which was originally written by Dave Conroy and further developed by Daniel Lawrence and which exists in many variations.
  • mg, originally called MicroGNUEmacs and, later, mg2a, a public-domain offshoot of MicroEMACS intended to more closely resemble GNU Emacs. Now installed by default on OpenBSD.
  • JOVE (Jonathan's Own Version of Emacs), Jonathan Payne's non-programmable Emacs implementation for UNIX-like systems.
  • MINCE (MINCE Is Not Complete Emacs), a version for CP/M and later DOS, from Mark of the Unicorn. MINCE evolved into Final Word, which eventually became the Borland Sprint word processor.
  • Perfect Writer, a CP/M implementation derived from MINCE that was included circa 1982 as the default word processor with the very earliest releases of the Kaypro II and Kaypro IV. It was later provided with the Kaypro 10 as an alternative to WordStar.
  • Freemacs, a DOS version that uses an extension language based on text macro expansion and fits within the original 64 KiB flat memory limit.
  • Zmacs, for the MIT Lisp Machine and its descendants, implemented in ZetaLisp.
  • Epsilon,[43] an Emacs clone by Lugaru Software. Versions for DOS, Windows, Linux, FreeBSD, Mac OS X and O/S 2 are bundled in the release. It uses a non-Lisp extension language with C syntax and used a very early concurrent command shell buffer implementation under the single-tasking MS-DOS.
  • PceEmacs is the Emacs-based editor for SWI-Prolog.
  • Hemlock, originally written in Spice Lisp, then Common Lisp. A part of CMU Common Lisp. Influenced by Zmacs. Later forked by Lucid Common Lisp (as Helix), LispWorks and Clozure CL projects. There is also a Portable Hemlock project, which aims to provide a Hemlock, which runs on several Common Lisp implementations.
  • edwin, an Emacs-like text editor included with MIT/GNU Scheme.

Editors with Emacs emulation

  • The Cocoa text system uses some of the same terminology and understands many Emacs navigation bindings. This is possible because the native UI uses the Command key (equivalent to Super) instead of the Control key.[44]
  • Eclipse (IDE) provides a set of Emacs keybindings.
  • Epsilon (text editor) Defaults to Emacs emulation and supports a vi mode.
  • GNOME Builder has an emulation mode for Emacs.
  • GNU Readline is a line editor that understands the standard Emacs navigation keybindings. It also has a vi emulation mode.
  • IntelliJ IDEA provides a set of Emacs keybindings.
  • JED has an emulation mode for Emacs.
  • Joe's Own Editor emulates Emacs keybindings when invoked as jmacs.
  • MATLAB provides Emacs keybindings for its editor.[45]
  • KornShell has an Emacs line editing mode that predates Gnu Readline.[46]
  • Visual Studio Code provides an extension to emulate Emacs keybindings.
  • Oracle SQL Developer can save and load alternative keyboard-shortcut layouts. One of the built-in layouts provides Emacs-like keybindings, including using different commands to achieve closer behavior.

Discover more about Implementations related topics

Lisp machine

Lisp machine

Lisp machines are general-purpose computers designed to efficiently run Lisp as their main software and programming language, usually via hardware support. They are an example of a high-level language computer architecture, and in a sense, they were the first commercial single-user workstations. Despite being modest in number Lisp machines commercially pioneered many now-commonplace technologies, including effective garbage collection, laser printing, windowing systems, computer mice, high-resolution bit-mapped raster graphics, computer graphic rendering, and networking innovations such as Chaosnet. Several firms built and sold Lisp machines in the 1980s: Symbolics, Lisp Machines Incorporated, Texas Instruments, and Xerox. The operating systems were written in Lisp Machine Lisp, Interlisp (Xerox), and later partly in Common Lisp.

EINE and ZWEI

EINE and ZWEI

EINE and ZWEI are two discontinued Emacs-like text editors developed by Daniel Weinreb and Mike McMahon for Lisp machines in the 1970s and 1980s.

James Gosling

James Gosling

James Gosling is a Canadian computer scientist, best known as the founder and lead designer behind the Java programming language.

Unix

Unix

Unix is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others.

Gosling Emacs

Gosling Emacs

Gosling Emacs is a discontinued Emacs implementation written in 1981 by James Gosling in C.

Daniel Weinreb

Daniel Weinreb

Daniel L. Weinreb was an American computer scientist and programmer, with significant work in the environment of the programming language Lisp.

Bernard Greenberg

Bernard Greenberg

Bernard S. Greenberg is a programmer and computer scientist, known for his work on Multics and the Lisp machine.

Multics Emacs

Multics Emacs

Multics Emacs is an early implementation of the Emacs text editor. It was written in Maclisp by Bernard Greenberg at Honeywell's Cambridge Information Systems Lab in 1978, as a successor to the original 1976 TECO implementation of Emacs and a precursor of later GNU Emacs.

Honeywell

Honeywell

Honeywell International Inc. is an American publicly traded, multinational conglomerate corporation headquartered in Charlotte, North Carolina. It primarily operates in four areas of business: aerospace, building technologies, performance materials and technologies (PMT), and safety and productivity solutions (SPS).

Richard Soley

Richard Soley

Richard Mark Soley is an American computer scientist and businessman, and chairman and CEO of the Object Management Group, Inc. (OMG). He is also executive director of the Cloud Standards Customer Council, and executive director of the Industrial Internet Consortium, managed by the OMG.

NeWS

NeWS

NeWS is a discontinued windowing system developed by Sun Microsystems in the mid-1980s. Originally known as "SunDew", its primary authors were James Gosling and David S. H. Rosenthal. The NeWS interpreter was based on PostScript extending it to allow interaction and multiple "contexts" to support windows. Like PostScript, NeWS could be used as a complete programming language, but unlike PostScript, NeWS could be used to make complete interactive programs with mouse support and a GUI.

Java (programming language)

Java (programming language)

Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need to recompile. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages. As of 2019, Java was one of the most popular programming languages in use according to GitHub, particularly for client–server web applications, with a reported 9 million developers.

Features

Emacs is primarily a text editor and is designed for manipulating pieces of text, although it is capable of formatting and printing documents like a word processor by interfacing with external programs such as LaTeX, Ghostscript or a web browser. Emacs provides commands to manipulate and differentially display semantic units of text such as words, sentences, paragraphs and source code constructs such as functions. It also features keyboard macros for performing user-defined batches of editing commands.

GNU Emacs is a real-time display editor, as its edits are displayed onscreen as they occur. This is standard behavior for modern text editors but EMACS was among the earliest to implement this. The alternative is having to issue a distinct command to display text, (e.g. after modifying it). This is done in line editors, such as ed (unix), ED (CP/M), and Edlin (MS-DOS).

General architecture

Almost all of the functionality in Emacs, including basic editing operations such as the insertion of characters into a file, is achieved through functions written in a dialect of the Lisp programming language. The dialect used in GNU Emacs is known as Emacs Lisp (Elisp), and was developed expressly to port Emacs to GNU and Unix. The Emacs Lisp layer sits atop a stable core of basic services and platform abstraction written in the C programming language, which enables GNU Emacs to be ported to a wide variety of operating systems and architectures without modifying the implementation semantics of the Lisp system where most of the editor lives. In this Lisp environment, variables and functions can be modified with no need to rebuild or restart Emacs, with even newly redefined versions of core editor features being asynchronously compiled and loaded into the live environment to replace existing definitions. Modern GNU Emacs features both bytecode and native code compilation for Emacs Lisp.

All configuration is stored in variables, classes, and data structures, and changed by simply updating these live. The use of a Lisp dialect in this case is a key advantage, as Lisp syntax consists of so-called symbolic expressions (or sexprs), which can act as both evaluatable code expressions and as a data serialisation format akin to, but simpler and more general than, widely known ones such as XML, JSON, and YAML. In this way there is little difference in practice between customising existing features and writing new ones, both of which are accomplished in the same basic way. The goal of Emacs' open design is to transparently expose Emacs' internals to the Emacs user during normal use in the same way that they would be exposed to the Emacs developer working on the git tree, and to collapse as much as possible of the distinction between using Emacs and programming Emacs, while still maintaining a stable, practical environment for novice users.

Interactive data

The main text editing data structure is the buffer, a memory region containing data (usually text) with associated attributes. The most important of these are:

  • The point: the editing cursor;
  • The mark: a settable location which, along with the point, enables selection of
  • The region: a conceptually contiguous collection of text to which editing commands will be applied;
  • The name and inode of the file the buffer is visiting (if any);
  • The default directory, where any OS-level commands will be executed from by default;
  • The buffer's modes, including a major mode possibly several minor modes
  • The buffer encoding, the method by which Emacs represents buffer data to the user;
  • and a variety of buffer local variables and Emacs Lisp state.

Modes, in particular, are an important concept in Emacs, providing a mechanism to disaggregate Emacs' functionality into sets of behaviours and keybinds relevant to specific buffers' data. Major modes provide a general package of functions and commands relevant to a buffer's data and the way users might be interacting with it (e.g. editing source code in a specific language, editing hex, viewing the filesystem, interacting with git, etc.), and minor modes define subsidiary collections of functionality applicable across many major modes (such as auto-save-mode). Minor modes can be toggled on or off both locally to each buffer as well as globally across all buffers, while major modes can only be toggled per-buffer. Any other data relevant to a buffer but not bundled into a mode can be handled by simply focussing that buffer and live modifying the relevant data directly.

Any interaction with the editor (like key presses or clicking a mouse button) is realized by evaluating Emacs Lisp code, typically a command, which is a function explicitly designed for interactive use. Keys can be arbitrarily redefined and commands can also be accessed by name; some commands evaluate arbitrary Emacs Lisp code provided by the user in various ways (e.g. a family of eval- region, buffer, and expression type commands). Even the simplest user inputs (such a printable characters) are effectuated as Emacs Lisp functions, such as the self-insert-command , bound to most keyboard keys in a typical text editing buffer by default, which parameterises itself with the locale-defined character associated with the key used to call it.

For example, pressing the f key in a buffer that accepts text input evaluates the code (self-insert-command 1 ?f), which inserts one copy of the character constant ?f at point. The 1, in this case, is determined by what Emacs terms the universal argument: all Emacs command code accepts a numeric value which, in its simplest usage, indicates repetition of an action, but in more complex cases (where repetition doesn't make sense) can yield other behaviours. These arguments may be supplied via command prefices, such as Control+u 7 f, or more compactly Meta+7 f, which expands to (self-insert-command 7 ?f). When no prefix is supplied, the universal argument is 1: every command implicitly runs once, but may be called multiply, or in a different way, when supplied with such a prefix. Such arguments may be also be non-positive where it makes sense for them to be so - it is up to the function accepting the argument to determine, according to its own semantics, what a given number means to it. One common usage is for functions to perform actions in reverse simply by checking the sign of the univeral argument, such as a sort command which sorts in obverse by default and in reverse when called with a negative argument, or undo/redo, which are simply negatives of each other (stepping forward and backward through a recursive history of diffs).

Command language

Because of its relatively large vocabulary of commands, Emacs features a long-established command language, to concisely express the keystrokes necessary to perform an action. This command language recognises the following shift and modifier keys: Ctrl, Alt, ⇧ Shift, Meta, Super, and Hyper. Not all of these may be present on an IBM-style keyboard, though they can usually be configured as desired. These are represented in command language as the respective prefices: C-, A-, S-, M-, s-, and H-. Keys whose names are only printable with more than one character are enclosed in angle brackets. Thus, a keyboard shortcut such as Ctrl+Alt+⇧ Shift+F9 (check dependent formulas and calculate all cells in all open workbooks in Excel) would be rendered in Emacs command language as C-A-S-, while an Emacs command like Meta+s f Ctrl+Meta+s (incremental file search by filename-only regexp), would be expressed as M-s f C-M-s. Command language is also used to express the actions needed to invoke commands with no default keybinding: for example, the command scratch-buffer (which initialises a buffer in memory for temporary text storage and manipulation), when invoked by name by the user, will be reported back as M-x scra , the shortest sequence of keystrokes which uniquely lexicate it.

Dynamic display

Because Emacs predates modern standard terminology for graphical user interfaces, it uses somewhat divergent names for familiar interface elements. Buffers, the data that Emacs users interact with, are displayed to the user inside windows, which are tiled portions of the terminal screen or the GUI window, which Emacs refers to as frames; in modern terminology, an Emacs frame would be a window and an Emacs window would be a split. Depending on configuration, windows can include their own scroll bars, line numbers, sometimes a 'header line' typically to ease navigation, and a mode line at the bottom (usually displaying buffer name, the active modes and point position of the buffer among others). The bottom of every frame is used for output messages (then called 'echo area') and text input for commands (then called 'minibuffer').

In general, Emacs display elements (windows, frames, etc.) are not tied to any specific data or process. Buffers are not associated with windows, and multiple windows can be opened onto the same buffer, for example to see different parts of a long text side-by-side without scrolling, and multiple buffers can share the same text, for example to take advantage of different major modes in a mixed-language file. Similarly, Emacs instances are not associated with particular frames, and multiple frames can be opened displaying a single running Emacs process, e.g. a frame per screen in a multi-monitor setup, or a terminal frame connected via ssh from a remote system and a graphical frame displaying the same Emacs process via the local system's monitor, etc. Because of this separation of concerns, Emacs can display roughly similarly on any device more complex than a dumb terminal, including providing typical graphical WIMP elements on sufficiently featureful text terminals - though graphical frames are the preferred mode of display, providing a strict superset of the features of text terminal frames.

Customizability and extensibility

  • User actions can be recorded into macros and replayed to automate complex, repetitive tasks. This is often done on an ad-hoc basis, with each macro discarded after use, although macros can be saved and invoked later.
    • Because of the uniformity of Emacs' features' definition in terms of Emacs Lisp, what counts as a "user action" for the purposes of macro-automation is flexible: macros may include, e.g., keypresses, commands, mouse clicks, other macros, and anything that can be effectuated via these. Macros can thus be recursive, and can be defined and invoked inside of macros.
  • At startup, Emacs executes an Emacs Lisp script named ~/.emacs (recent versions also look for ~/emacs.el, ~/.emacs.d/init.el, and ~/.config/emacs/init.el;[47], as well as similar variations on ~/.config/emacs/early-init.el.[48] Emacs reads early-init.el first if it exists, and it can be used to configure or short-circuit core Emacs features before they load, such as the graphical display system or package manager. It will then execute the first version .emacs or init.el that it finds, ignoring the rest. This personal customization file can be arbitrarily long and complex, but typical content includes:
    • Setting global variables or invoking functions to customize Emacs behaviour, for example (set-default-coding-systems 'utf-8)
    • Key bindings to override standard ones and to add shortcuts for commands that the user finds convenient but don't have a key binding by default. Example: (global-set-key (kbd "C-x C-b") 'ibuffer)
    • Loading, enabling and initializing extensions (Emacs comes with many extensions, but only a few are loaded by default.)
    • Configuring event hooks to run arbitrary code at specific times, for example to automatically recompile source code after saving a buffer (after-save-hook)
    • Executing arbitrary files, usually to split an overly long configuration file into manageable and homogeneous parts (~/.emacs.d/ and ~/elisp/ are traditional locations for these personal scripts)
  • The customize extension allows the user to set configuration properties such as the color scheme interactively, from within Emacs, in a more user-friendly way than by setting variables in .emacs: it offers search, descriptions and help text, multiple choice inputs, reverting to defaults, modification of the running Emacs instance without reloading, and other conveniences similar to the preferences functionality of other programs. The customized values are saved in .emacs (or another designated file) automatically.
  • Themes, affecting the choice of fonts and colours, are defined as Emacs Lisp files and chosen through the customize extension.
  • Modes, which support editing a range of programming languages (e.g., emacs-lisp-mode, c-mode, java-mode, ESS for R) by changing fonts to highlight the code and keybindings modified (forword-function vs. forward-page). Other modes include ones that support editing spreadsheets (dismal) and structured text.

Self-documenting

The first Emacs contained a help library that included documentation for every command, variable and internal function. Because of this, Emacs proponents described the software as self-documenting in that it presents the user with information on its normal features and its current state. Each function includes a documentation string that is displayed to the user on request, a practice that subsequently spread to programming languages including Lisp, Java, Perl, and Python. This help system can take users to the actual code for each function, whether from a built-in library or an added third-party library.

Emacs also has a built-in tutorial. Emacs displays instructions for performing simple editing commands and invoking the tutorial when it is launched with no file to edit. The tutorial is by Stuart Cracraft and Richard Stallman.

Discover more about Features related topics

Text editor

Text editor

A text editor is a type of computer program that edits plain text. Such programs are sometimes known as "notepad" software. Text editors are provided with operating systems and software development packages, and can be used to change files such as configuration files, documentation files and programming language source code.

LaTeX

LaTeX

LaTeX is a software system for document preparation. When writing, the writer uses plain text as opposed to the formatted text found in WYSIWYG word processors like Microsoft Word, LibreOffice Writer and Apple Pages. The writer uses markup tagging conventions to define the general structure of a document to stylise text throughout a document, and to add citations and cross-references. A TeX distribution such as TeX Live or MiKTeX is used to produce an output file suitable for printing or digital distribution.

Ghostscript

Ghostscript

Ghostscript is a suite of software based on an interpreter for Adobe Systems' PostScript and Portable Document Format (PDF) page description languages. Its main purposes are the rasterization or rendering of such page description language files, for the display or printing of document pages, and the conversion between PostScript and PDF files.

Syntax highlighting

Syntax highlighting

Syntax highlighting is a feature of text editors that are used for programming, scripting, or markup languages, such as HTML. The feature displays text, especially source code, in different colours and fonts according to the category of terms. This feature facilitates writing in a structured language such as a programming language or a markup language as both structures and syntax errors are visually distinct. This feature is also employed in many programming related contexts, either in the form of colorful books or online websites to make understanding code snippets easier for readers. Highlighting does not affect the meaning of the text itself; it is intended only for human readers.

Sentence (linguistics)

Sentence (linguistics)

In linguistics and grammar, a sentence is a linguistic expression, such as the English example "The quick brown fox jumps over the lazy dog." In traditional grammar, it is typically defined as a string of words that expresses a complete thought, or as a unit consisting of a subject and predicate. In non-functional linguistics it is typically defined as a maximal unit of syntactic structure such as a constituent. In functional linguistics, it is defined as a unit of written texts delimited by graphological features such as upper-case letters and markers such as periods, question marks, and exclamation marks. This notion contrasts with a curve, which is delimited by phonologic features such as pitch and loudness and markers such as pauses; and with a clause, which is a sequence of words that represents some process going on throughout time.

Paragraph

Paragraph

A paragraph is a self-contained unit of discourse in writing dealing with a particular point or idea. Though not required by the orthographic conventions of any language with a writing system, paragraphs are a conventional means of organizing extended segments of prose.

Source code

Source code

In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source code.

Ed (text editor)

Ed (text editor)

ed is a line editor for Unix and Unix-like operating systems. It was one of the first parts of the Unix operating system that was developed, in August 1969. It remains part of the POSIX and Open Group standards for Unix-based operating systems, alongside the more sophisticated full-screen editor vi.

Edlin

Edlin

Edlin is a line editor, and the only text editor provided with early versions of IBM PC DOS, MS-DOS and OS/2. Although superseded in MS-DOS 5.0 and later by the full-screen MS-DOS Editor, and by Notepad in Microsoft Windows, it continues to be included in the 32-bit versions of current Microsoft operating systems.

Emacs Lisp

Emacs Lisp

Emacs Lisp is a dialect of the Lisp programming language used as a scripting language by Emacs. It is used for implementing most of the editing functionality built into Emacs, the remainder being written in C, as is the Lisp interpreter. Emacs Lisp is also termed Elisp, although there is also an older, unrelated Lisp dialect with that name.

GNU

GNU

GNU is an extensive collection of free software, which can be used as an operating system or can be used in parts with other operating systems. The use of the completed GNU tools led to the family of operating systems popularly known as Linux. Most of GNU is licensed under the GNU Project's own General Public License (GPL).

Unix

Unix

Unix is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others.

Culture

Church of Emacs

The Church of Emacs, formed by Richard Stallman, is a parody religion created for Emacs users.[49] While it refers to vi as the editor of the beast (vi-vi-vi being 6-6-6 in Roman numerals), it does not oppose the use of vi; rather, it calls it proprietary software anathema. ("Using a free version of vi is not a sin but a penance."[50]) The Church of Emacs has its own newsgroup, alt.religion.emacs,[51] that has posts purporting to support this parody religion. Supporters of vi have created an opposing Cult of vi.

Stallman has jokingly referred to himself as St I GNU cius, a saint in the Church of Emacs.[52]

Emacs pinky

There is folklore attributing a repetitive strain injury colloquially called Emacs pinky to Emacs' strong dependence on modifier keys,[53] although there have not been any studies done to show Emacs causes more such problems than other keyboard-heavy computer programs.

Users have addressed this through various approaches. Some users recommend simply using the two Control keys on typical PC keyboards like Shift keys while touch typing to avoid overly straining the left pinky, a proper use of the keyboard will reduce the RSI.[54] Software-side methods include:[55]

  • Customizing the key layout so that the Ctrl key is transposed with the Caps Lock key.[56] Similar techniques include defining the Caps Lock key as an additional Control key or transposing the Control and Meta keys.However, as these keys are still pressed with the same finger, they may still contribute to Emacs pinky.
  • Software, such as xwrits or the built-in type-break-mode in Emacs, that reminds the user to take regularly scheduled breaks.
  • Using the ErgoEmacs keybindings (with minor mode ergoemacs-mode).[57]
  • Customizing the whole keyboard layout to move statistically frequent Emacs keys to more appropriate places.[58]
  • Packages such as ace-jump-mode[59] or Emacs Lisp extensions that provide similar functionality of tiered navigation, first asking for a character then replacing occurrences of the character with access keys for cursor movement.
  • evil-mode, an advanced Vim emulation layer.
  • god-mode, which provides an approach similar to vim's with a mode for entering Emacs commands without modifier keys.
  • Using customized key layout offered by Spacemacs and Doom Emacs, projects where space bar key is used as the main key for initiating control sequences. These projects also heavily incorporates both evil-mode and the latter god-mode.[60]
  • StickyKeys, which turns key sequences into key combinations.[61]
  • Emacs' built-in viper-mode that allows use of the vi key layout for basic text editing and the Emacs scheme for more advanced features.[62]
  • Giving a dual role to a more-comfortably accessed key such as the space bar so that it functions as a Control key when pressed in combination with other keys. Ergonomic keyboards or keyboards with a greater number of keys adjacent to the space bar, such as Japanese keyboards, allow thumb control of other modifier keys too like Meta or Shift.[63]
  • Using a limited ergonomic subset of keybindings, and accessing other functionality by typing M-x . M-x itself can also be rebound.
  • Driving Emacs through voice input.

Hardware solutions include special keyboards such as Kinesis's Contoured Keyboard, which places the modifier keys where they can easily be operated by the thumb, or the Microsoft Natural keyboard, whose large modifier keys are placed symmetrically on both sides of the keyboard and can be pressed with the palm of the hand.[53] Foot pedals can also be used.

The Emacs pinky is a relatively recent development. The Space-cadet keyboard on which Emacs was developed had oversized Control keys that were adjacent to the space bar and were easy to reach with the thumb.[64]

Terminology

The word emacs is sometimes pluralized as emacsen, by phonetic analogy with boxen and VAXen, referring to different varieties of Emacs.[65]

Discover more about Culture related topics

Editor war

Editor war

The editor war is the rivalry between users of the Emacs and vi text editors. The rivalry has become an enduring part of hacker culture and the free software community.

Parody religion

Parody religion

A parody religion or mock religion is a belief system that challenges the spiritual convictions of others, often through humor, satire, or burlesque. Often constructed to achieve a specific purpose related to another belief system, a parody religion can be a parody of several religions, sects, gurus, cults, or new religious movements at the same time, or even a parody of no particular religion – instead parodying the concept of religious belief itself. Some parody religions emphasise having fun; the new faith may serve as a convenient excuse for pleasant social interaction among the like-minded.

666 (number)

666 (number)

666 is the natural number following 665 and preceding 667.

Proprietary software

Proprietary software

Proprietary software is software that is deemed within the free and open-source software to be non-free because its creator, publisher, or other rightsholder or rightsholder partner exercises a legal monopoly afforded by modern copyright and intellectual property law to exclude the recipient from freely sharing the software or modifying it, and—in some cases, as is the case with some patent-encumbered and EULA-bound software—from making use of the software on their own, thereby restricting his or her freedoms. It is often contrasted with open-source or free software. For this reason, it is also known as non-free software or closed-source software.

Anathema

Anathema

Anathema, in common usage, is something or someone detested or shunned. In its other main usage, it is a formal excommunication. The latter meaning, its ecclesiastical sense, is based on New Testament usage. In the Old Testament, anathema was a creature or object set apart for sacrificial offering and thus removed from ordinary use and destined instead for destruction.

Free software

Free software

Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, not price; all users are legally free to do what they want with their copies of a free software regardless of how much is paid to obtain the program. Computer programs are deemed "free" if they give end-users ultimate control over the software and, subsequently, over their devices.

Penance

Penance

Penance is any act or a set of actions done out of repentance for sins committed, as well as an alternate name for the Catholic, Lutheran, Eastern Orthodox, and Oriental Orthodox sacrament of Reconciliation or Confession. It also plays a part in confession among Anglicans and Methodists, in which it is a rite, as well as among other Protestants. The word penance derives from Old French and Latin paenitentia, both of which derive from the same root meaning repentance, the desire to be forgiven. Penance and repentance, similar in their derivation and original sense, have come to symbolize conflicting views of the essence of repentance, arising from the controversy as to the respective merits of "faith" and "good works". Word derivations occur in many languages.

GNU

GNU

GNU is an extensive collection of free software, which can be used as an operating system or can be used in parts with other operating systems. The use of the completed GNU tools led to the family of operating systems popularly known as Linux. Most of GNU is licensed under the GNU Project's own General Public License (GPL).

Repetitive strain injury

Repetitive strain injury

A repetitive strain injury (RSI) is an injury to part of the musculoskeletal or nervous system caused by repetitive use, vibrations, compression or long periods in a fixed position. Other common names include repetitive stress disorders, cumulative trauma disorders (CTDs), and overuse syndrome.

Little finger

Little finger

The little finger, or pinkie, also known as the baby finger, fifth digit, or pinky finger, is the most ulnar and smallest digit of the human hand, and next to the ring finger.

Control key

Control key

In computing, a Control key Ctrl is a modifier key which, when pressed in conjunction with another key, performs a special operation ; similar to the Shift key, the Control key rarely performs any function when pressed by itself. The Control key is located on or near the bottom left side of most keyboards, with many featuring an additional one at the bottom right.

Caps Lock

Caps Lock

Caps Lock ⇪ Caps Lock is a button on a computer keyboard that causes all letters of bicameral scripts to be generated in capital letters. It is a toggle key: each press reverses the previous action. Some keyboards also implement a light, to give visual feedback about whether it is on or off. Exactly what Caps Lock does depends on the keyboard hardware, the operating system, the device driver, and the keyboard layout. Usually, the effect is limited to letter keys. Letters of non-bicameral scripts and non-letter characters are generated normally.

Source: "Emacs", Wikipedia, Wikimedia Foundation, (2023, January 25th), https://en.wikipedia.org/wiki/Emacs.

Enjoying Wikiz?

Enjoying Wikiz?

Get our FREE extension now!

See also
References
  1. ^ "Emacs Release Dates".
  2. ^ a b Zawinski, Jamie (2005-06-21) [1999]. "Emacs Timeline". Retrieved 11 August 2015.
  3. ^ a b Greenberg, Bernard S. (1979). Multics Emacs: The History, Design and Implementation.
  4. ^ a b c "GNU Emacs FAQ".
  5. ^ a b c d Adrienne G. Thompson. "MACSimizing TECO". Archived from the original on 2013-10-24. Retrieved 2012-02-26.
  6. ^ "A Tutorial Introduction to GNU Emacs". For an editor to be called "emacs" the main requirement is that it be fully extensible with a real programming language, not just a macro language.
  7. ^ "GNU Emacs Pocket Reference". GNU Emacs is the most popular and widespread of the Emacs family of editors.
  8. ^ "GNU Emacs Manual". FSF. Retrieved 24 November 2012.
  9. ^ "Tramp User Manual". Free Software Foundation. Retrieved 2009-04-04.
  10. ^ "Introducing Elfeed, an Emacs Web Feed Reader".
  11. ^ "Amusements". Finally, if you find yourself frustrated, try describing your problems to the famous psychotherapist Eliza. Just do M-x doctor.
  12. ^ Richard Stallman is often credited as another co-creator, but as Daniel Weinreb wrote, "The original (TECO-based) Emacs was created and designed by Guy L. Steele Jr. and David Moon. After they had it working, and it had become established as the standard text editor at the AI lab, Stallman took over its maintenance." Moon himself responded "All true, so far as I can remember. But in all fairness I have to say that Stallman greatly improved Emacs after he “liberated” it from Guy and me." See Weinreb, Dan (November 11, 2007), "Rebuttal to Stallman's Story About The Formation of Symbolics and LMI", Dan Weinreb's blog: software and innovation, archived from the original on January 1, 2009.
  13. ^ "A history of Emacs". XEmacs Internals Manual. 2006-12-11. Retrieved 2007-08-22.
  14. ^ Allombert, Bill. "Debian Popularity Contest". Editors report. Debian. Retrieved 22 November 2011.
  15. ^ "The 10 oldest, significant open-source programs". ZDNet.
  16. ^ Raymond, Eric S.; Cameron, Debra; Rosenblatt, Bill (1996). Learning GNU Emacs, 2nd Edition. Sebastopol, CA: O'Reilly. pp. 408–409. ISBN 1-56592-152-6.
  17. ^ Williams, Sam (2002). Free as in Freedom: Richard Stallman's Crusade for Free Software. Sebastopol, CA: O'Reilly Media. p. 82. ISBN 0-596-00287-4.
  18. ^ Arthur Samuel (March 1980). "Essential E" (PDF). Retrieved 2020-04-19.
  19. ^ "EMACS vs. vi: The endless geek 'holy war'". Archived from the original on 2014-11-26. Retrieved 2014-05-30. "EMACS as such actually started out as a standards project," emails Guy Steele
  20. ^ Stallman, Richard M. (1987). "The EMACS Full-Screen Editor". GARB. No. Maj 1987. Lysator, Linköping University. pp. 8–11. Retrieved 2007-09-14.
  21. ^ Reynolds, Craig (1992-02-10). Wiseman, David G. (ed.). "The Emac Bolio Name Koan". David G. Wiseman: Stories of Computer Folklore. Archived from the original on January 16, 2003. A cocky novice once said to Stallman: 'I can guess why the editor is called Emacs, but why is the justifier called Bolio?'. Stallman replied forcefully, Names are but names, Emack & Bolio's is the name of a popular ice cream shop in Boston town. Neither of these men had anything to do with the software.' His question answered, yet unanswered, the novice turned to go, but Stallman called to him, 'Neither Emacs nor Bolio had anything to do with the ice cream shop, either.'
  22. ^ a b Stallman, Richard (March 26, 1981). EMACS: The Extensible, Customizable, Self-Documenting, Display Editor (PDF) (Technical report). MIT AI Lab. AI Memo 519a. Retrieved 2011-01-07.
  23. ^ Leigh Klotz (2007-08-29). "email quoted in "Be Careful What You Joke About"". The New York Times. Retrieved 2010-05-01.
  24. ^ "Comment by ZWEI's author Dan Weinreb". I wrote the second Emacs ever: the Lisp machine implementation, whose spec was "do what Stallman's PDP-10 (original) Emacs does", and then progressed from there. There's just a whole LOT of it. It took me and Mike McMahon endless hours to implement so many commands to make ZWEI/Zmacs.
  25. ^ Owen Theodore Anderson (January 1979). "The Design and Implementation of a Display-Oriented Editor Writing System" (PDF). Retrieved 2012-09-09.
  26. ^ Christopher Kelty; Mario Biagioli; Peter Jaszi; Martha Woodmansee (2015). Making and Unmaking Intellectual Property. Computer Corporation of America (CCA) EMACS, written by Steve Zimmerman
  27. ^ "Emacs". December 17, 2017.
  28. ^ "Differences between GNU Emacs and CCA Emacs. Copyyright".
  29. ^ "A History of Emacs".
  30. ^ "emacs-devel msg 00872 (2014-09-29)". In retrospect 24.3 should have been named 25.1 and 24.4 should have been named 26.1. The .N thingy should really be kept only for bug-fix releases and neither of 24.3, 24.4, nor the previously planned 24.5 are bug-fix releases.
  31. ^ Stoll, Clifford (1988). "Stalking the wily hacker". Communications of the ACM. 31 (5): 484–497. doi:10.1145/42411.42412. S2CID 6956966.
  32. ^ "GNU Emacs". Open Hub. Retrieved 2017-11-25.
  33. ^ Raymond, Eric (2014-11-12). "New Git repository is up". Retrieved 2017-11-25.
  34. ^ Stallman, Richard (2008-02-22). "Re: Looking for a new Emacs maintainer or team". gnu.org Mailing List. Retrieved 2017-11-25.
  35. ^ McNamara, Paul (2008-02-25). "Stallman on handing over GNU Emacs, its future and the importance of nomenclature". Network World. Retrieved 2017-11-25.
  36. ^ Chirgwin, Richard (2015-11-05). "Emacs gets new maintainer as Richard Stallman signs off". The Register. Retrieved 2017-11-25.
  37. ^ Raymond, Eric (2014-03-29). "Ugliest…repository…conversion…ever". Retrieved 2017-11-25. twenty-nine years of continuous development by no fewer than 579 people
  38. ^ Stephen J., Turnbull. "XEmacs vs. GNU Emacs". Retrieved 2012-10-02.
  39. ^ "XEmacs is Dead. Long Live XEmacs!".
  40. ^ FrontPage - Meadow Wiki Archived 2012-02-16 at the Wayback Machine
  41. ^ "My Lisp Experiences and the Development of GNU Emacs". There were people in those days, in 1985, who had one-megabyte machines without virtual memory. They wanted to be able to use GNU Emacs. This meant I had to keep the program as small as possible.
  42. ^ "GNU Zile (Zile is Lossy Emacs) - Summary". Modern computers have more than enough resources to start and run a full Emacs in a fraction of a second, and Emacs is probably what you want. Zile is a small, fast, and powerful Emacs clone. It is useful for small footprint installations (e.g. on floppy disk), machines with little memory, or quick editing sessions, especially on remote machines or as a different user, e.g. root.
  43. ^ "Lugaru Software Homepage".
  44. ^ "Cocoa text system".
  45. ^ "Setting up keybindings for the Command Window and Editor". Mathworks Blogs. 2007-05-11. Retrieved 2019-08-18.
  46. ^ Bolsky, Morris I.; Korn, David G. (1989). "Acknowledgements". The KornShell Command and Programming Language. Englewood Cliffs, NJ: Prentice Hall. pp. xii. ISBN 0-13-516972-0.
  47. ^ "Init file".
  48. ^ "Early Init file".
  49. ^ "Saint IGNUcius - Richard Stallman". Retrieved 29 January 2015.
  50. ^ "The unabridged selective transcript of Richard M Stallman's talk at the ANU". Retrieved 29 January 2015.
  51. ^ alt.religion.emacs newsgroup
  52. ^ "Saint IGNUcius - Richard Stallman". www.stallman.org. Retrieved 27 March 2018.
  53. ^ a b "How To Avoid The Emacs Pinky Problem". Xahlee.org. Retrieved 2009-11-08.
  54. ^ "Emacs: Why You Should Not Swap {Caps Lock, Control} Keys". In touch typing, modifiers comes in pairs, such as ⇧ Shift key. The accepted ergonomic way to press modifier combinations is using one hand to press the modifier key and the other to press the letter key. Using 2 hands avoids single-hand straining its muscle.
  55. ^ "EmacsWiki: Repeated Strain Injury". Retrieved 29 January 2015.
  56. ^ "Moving The Ctrl Key". EmacsWiki. Retrieved 2009-11-08.
  57. ^ "ErgoEmacs Homepage". Retrieved 2018-09-01.
  58. ^ "Keymacs layout". GitHub. 15 September 2022.
  59. ^ "EmacsWiki: Ace Jump". Retrieved 29 January 2015.
  60. ^ "Spacemacs". GitHub. Retrieved 2015-04-20.
  61. ^ BayleShanks (2009-10-07). "Sticky Modifiers". EmacsWiki. Retrieved 2009-11-08.
  62. ^ "Viper Mode". EmacsWiki. Retrieved 2009-11-08.
  63. ^ "At Home Modifier by Evdev". Retrieved 2015-04-14.
  64. ^ "Why Emacs's Keyboard Shortcuts are Painful".
  65. ^ "VAXen". Catb.org. Retrieved 2009-11-08.
Bibliography
External links

The content of this page is based on the Wikipedia article written by contributors..
The text is available under the Creative Commons Attribution-ShareAlike Licence & the media files are available under their respective licenses; additional terms may apply.
By using this site, you agree to the Terms of Use & Privacy Policy.
Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization & is not affiliated to WikiZ.com.