GNU Emacs
![]() Current GNU Emacs logo | |
![]() GNU Emacs 26.2 running onGNOME 3 | |
Original author(s) | Richard Stallman |
---|---|
Developer(s) | GNU Project |
Initial release | 20 March 1985 |
Stable release | 29.4[1] ![]() |
Preview release | |
Repository | |
Written in | Emacs Lisp,C[2] |
Operating system | Unix-like(GNU,Linux,macOS,BSDs,Solaris),Windows,MS-DOS[3] |
Platform | Cross-platform |
Available in | English |
Type | Text editor |
License | GPL-3.0-or-later |
Website | www |
GNU Emacsis afree softwaretext editor.It was created byGNU ProjectfounderRichard Stallman,based on theEmacseditor developed forUnixoperating systems. GNU Emacs has been a central component of theGNUproject and a flagship project of thefree softwaremovement.[4][5]Its tag line is "the extensible self-documenting text editor."[6]
History
[edit]![](https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Richard_Stallman_-_F%C3%AAte_de_l%27Humanit%C3%A9_2014_-_010.jpg/220px-Richard_Stallman_-_F%C3%AAte_de_l%27Humanit%C3%A9_2014_-_010.jpg)
The originalEMACSwas written in 1976 byDavid A. MoonandGuy L. Steele Jr.as a set of macros for theTECOeditor, and in 1984, Richard Stallman began work on GNU Emacs, to produce afree softwarealternative to the proprietaryGosling Emacs.GNU Emacs was initially based on Gosling Emacs, but Stallman's replacement of itsMocklispinterpreterwith a true Lisp interpreter required that nearly all of its code be rewritten. This became the first program released by the then-nascent GNU Project. GNU Emacs is written in C and providesEmacs 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 major version skipped from "1" to "13". A new third version number was added to represent changes made by user sites.[7]In the current numbering scheme, a number with two components signifies a release version, with development versions having three components.[8]
GNU Emacs was later ported to theUnixoperating system.It offered more features than Gosling Emacs, in particular a full-featured Lisp as its extension language, and soon replaced Gosling Emacs as thede factoUnix Emacs editor.Markus Hessexploited a security flaw in GNU Emacs's email subsystem in his 1986 cracking spree, in which he gainedsuperuseraccess to Unix computers.[9]
Although users commonly submitted patches and Elisp code to the net.emacsnewsgroup,participation in GNU Emacs development was relatively restricted until 1999, and was used as an example of the "Cathedral" development style inThe Cathedral and the Bazaar.The project has since adopted a public development mailing list and anonymousCVSaccess. Development took place in a single CVS trunk until 2008, and today uses theGit[10]DVCS.
Richard Stallman has remained the principal maintainer of GNU Emacs, but he has stepped back from the role at times. Stefan Monnier and Chong Yidong have overseen maintenance since 2008.[11]On September 21, 2015 Monnier announced that he would be stepping down as maintainer effective with the feature freeze of Emacs 25.[12]Longtime contributor John Wiegley was announced as the new maintainer on November 5, 2015.[13]Wiegley was joined by Eli Zaretskii in July, 2016,[14][16]and Lars Ingebrigtsen in September, 2020.[17]
Licensing
[edit]The terms of theGNU General Public License(GPL) state that the Emacs source code, including both the C and Emacs Lisp components, are freely available for examination, modification, and redistribution.
Older versions of the GNU Emacs documentation appeared under an ad-hoc license that required the inclusion of certain text in any modified copy. In the GNU Emacs user's manual, for example, this included instructions for obtaining GNU Emacs and Richard Stallman's essayThe GNU Manifesto.The XEmacs manuals, which were inherited from older GNU Emacs manuals when the fork occurred, have the same license. Newer versions of the documentation use theGNU Free Documentation Licensewith "invariant sections" that require the inclusion of the same documents and that the manuals proclaim themselves asGNU Manuals.[citation needed]
For GNU Emacs, like many other GNU packages, it remains policy to accept significant code contributions only if thecopyrightholder executes a suitable disclaimer or assignment of their copyright interest to theFree Software Foundation(FSF.) Small contributions of fewer than 10 lines of code are exempt. This policy is in place so that the FSF can defend the software in court if itscopyleftlicense is violated.
In 2011, it was noticed that GNU Emacs had been accidentally releasing some binaries without corresponding source code for two years, in opposition to the intended spirit of the GPL.[18][19][20]Richard Stallman described this incident as "a very bad mistake,"[21]which was promptly fixed. The FSF did not sue any downstream redistributors who unknowinglyviolatedthe GPL by distributing these binaries.
Using GNU Emacs
[edit]![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Emacs_Dired_buffers.png/220px-Emacs_Dired_buffers.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/GNU_Emacs_editing_C_code.png/220px-GNU_Emacs_editing_C_code.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/5/59/Cpp_in_GNU_emacs.png/220px-Cpp_in_GNU_emacs.png)
Commands
[edit]In its normal editing mode, GNU Emacs behaves like common text editors by allowing the user totypetext with the keyboard and move the editing point witharrow keys.Escape keysequences or pressing thecontrol keyand/or themeta key,alt keyorsuper keysin conjunction with a regular key producesmodified keystrokesthat invoke functions from the Emacs Lisp environment. Commands such assave-buffer
andsave-buffers-kill-emacs
combine multiple modified keystrokes.
Some GNU Emacs commands work by invoking external programs, such asispellforspell-checkingand theGNU Compiler Collection(GCC) for programcompilation.Emacs also supports "inferior processes," long-livedchild processesthat interact with the editor. This is used to implementshell-mode,running aUnix shellas inferior process, as well asread–eval–print loop(REPL) modes for various programming languages. Emacs' support for external processes makes it suitable for interactive programming along the lines ofInterlisporSmalltalk.[22]
Users who prefer the widely usedIBM Common User Accesskeyboard shortcut layout can usecua-mode,a package that originally was a third-party add-on but has been included in GNU Emacs since version 22.
Minibuffer
[edit]Emacs uses the "minibuffer," normally the bottommost line, to display messages and request information, functions that are often performed bydialog boxesinGUIeditors. The minibuffer holds information such as text to target in a search or the name of a file to read or save. When applicable,command-line completionis available using the tab and space keys.
File management and display
[edit]Emacs keeps text indata structuresknown asbuffers.Buffers may or may not be displayed onscreen, and all buffer features are accessible by bothEmacs Lispprograms and the user interface.[23]The user can create new buffers and dismiss unwanted ones, and many buffers can exist at the same time, limited only by available memory.[24]Emacs can be configured to save the list of open buffers on exit, and reopen this list when it is restarted.[25]
Some buffers contain text loaded fromtext files,which the user can edit and save back to permanent storage. These buffers are said to be "visiting" files. Buffers also serve to display other data, such as the output of Emacs commands,direddirectory listings, documentation strings displayed by the "help" library and notification messages that in other editors would be displayed in adialog box.Some of these notifications are displayed briefly in the minibuffer, and GNU Emacs provides a*Messages*buffer that keeps a history of the most recent notifications of this type. When the minibuffer is used for output from Emacs, it is called the "echo area".[26]Longer notifications are displayed in buffers of their own. The maximum length of messages that will be displayed in the minibuffer is, of course, configurable.
Buffers can also serve as input and output areas for an external process such as ashellorREPL.Buffers which Emacs creates on its own are typically named withasteriskson each end, to distinguish from user buffers. The list of open buffers is itself displayed in this type of buffer.
Most Emacs key sequences remain functional in any buffer. For example, the standard Ctrl-sisearch
function can be used to search filenames in dired buffers, and the file list can be saved to a text file just as any other buffer. Dired buffers can be switched to a writable mode, in which filenames and attributes can be edited textually; when the buffer is saved, the changes are written to the filesystem. This allows multiple files to be renamed using the search and replace features of Emacs. When so equipped, Emacs displaysimage filesin buffers. Emacs is binary safe and 8-bit clean.[27]
Emacs can split the editing area into separate non-overlapping sections called "windows," a feature that has been available since 1975, predating the graphical user interface in common use. In Emacs terminology, "windows" are similar to what other systems call "frames"or"panes"– a rectangular portion of the program's display that can be updated and interacted with independently. Each Emacs window has astatus barcalled the "mode line" displayed by default at the bottom edge of the window. Emacs windows are available both in text-terminal and graphical modes and allow more than one buffer, or several parts of a buffer, to be displayed at once. Common applications are to display adiredbuffer along with the contents of files in the current directory (there are special modes to make the file buffer follow the file highlighted in dired), to display thesource codeof a program in one window while another displays ashellbuffer with the results of compiling the program, to run a debugger along with a shell buffer running the program, to work on code while displaying aman pageor other documentation (possibly loaded over theWorld Wide Webusing one of Emacs' built-in web browsers) or simply to display multiple files for editing at once such as a header along with its implementation file for C-based languages. In addition, there isfollow-mode,a minor mode that chains windows to display non-overlapping portions of a buffer. Usingfollow-mode,a single file can be displayed in multiple side-by-side windows that update appropriately when scrolled. In addition, Emacs supports "narrowing" a buffer to display only a portion of a file, with top/bottom of buffer navigation functionality and buffer size calculations reflecting only the selected range.
Emacs windows aretiledand cannot appear "above" or "below" their companions. Emacs can launch multiple "frames", which are displayed as individualwindowsin a graphical environment. On a text terminal, multiple frames are displayed stacked filling the entire terminal, and can be switched using the standard Emacs commands.[28]
Major modes
[edit]GNU Emacs can display or edit a variety of different types of text and adapts its behavior by enteringadd-onmodescalled "major modes". There are major modes for many different purposes including editing ordinary text files, thesource codeof manymarkupandprogramming languages,as well as displayingweb pages,directory listingsand other system info. Each major mode involves an Emacs Lisp program that extends the editor to behave more conveniently for the specified type of text. Major modes typically provide some or all of the following common features:
- Syntax highlighting ( "font lock" ): combinations of fonts and colors, termed "faces,"[29]that differentiate between document elements such askeywordsandcomments.
- Automatic indentation to maintain consistent formatting within a file.
- The automatic insertion of elements required by the structure of the document, such as spaces, newlines, and parentheses.
- Special editing commands, such as commands to jump to the beginning or the end of a function while editing a programming file or commands to validate documents or insert closing tags while working with markup languages such asXML.
Minor modes
[edit]The use of "minor modes" enables further customization. A GNU Emacs editing buffer can use only one major mode at a time, but multiple minor modes can operate simultaneously. These may operate directly on documents, as in the way the major mode for the C programming language defines a separate minor mode for each of its popularindent styles,or they may alter the editing environment. Examples of the latter include a mode that adds the ability to undo changes to the window configuration and one that performs on-the-fly syntax checking. There is also a minor mode that allows multiple major modes to be used in a single file, for convenience when editing a document in which multiple programming languages are embedded.
"Batch mode"
[edit]GNU Emacs supports the capability to use it as an interpreter for theEmacs Lisplanguage without displaying the text editor user interface. In batch mode, user configuration is not loaded and the terminalinterruptcharacters C-c and C-z will have their usual effect of exiting the program or suspending execution instead of invoking Emacs keybindings. GNU Emacs hascommand line optionsto specify either a file to load and execute, or an Emacs Lisp function may be passed in from the command line. Emacs will start up, execute the passed-in file or function, print the results, then exit.[30]Theshebangline#!/usr/bin/emacs --script
allows the creation of standalone scripts in Emacs Lisp.[31]
Manuals
[edit]![](https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/GNU_Emacs_manual_cover_design.png/200px-GNU_Emacs_manual_cover_design.png)
TheGNU Emacs Manual,written by Richard Stallman, is bundled with GNU Emacs and can be viewed with the built-ininfobrowser.[32]Two additional manuals, theEmacs Lisp Reference Manualby Bil Lewis, Richard Stallman, and Dan Laliberte andAn Introduction to Programming in Emacs LispbyRobert Chassell,are included. All three manuals are also published in book form by theFree Software Foundation.
Internationalization
[edit]GNU Emacs has support for many Alpha bets, scripts, writing systems, and cultural conventions and providesspell-checkingfor many languages by calling external programs such asispell.Version 24 added support for bidirectional text and left-to-right and right-to-leftwriting directionfor languages such as Arabic, Persian and Hebrew.
Manycharacter encodingsystems, includingUTF-8,are supported. GNU Emacs uses UTF-8 for its encoding as of version 23, while prior versions used their own encoding internally and performed conversion upon load and save. The internal encoding used by XEmacs is similar to that of GNU Emacs but differs in details.
The GNU Emacs user interface originated in English and, with the exception of the beginners' tutorial, has not been translated into any other language.
A subsystem calledEmacspeakenables visually impaired and blind users to control the editor through audio feedback.
Extensibility
[edit]![](https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Emacs%2BAucTeX.png/220px-Emacs%2BAucTeX.png)
The behavior of GNU Emacs can be modified and extended almost without limit by incorporating Emacs Lisp programs that define new commands, new buffer modes, new keymaps, add command-line options,[33]and so on. Many extensions providing user-facing functionality define a major mode (either for a new file type or to build a non-text-editing user interface); others define only commands or minor modes, or provide functions that enhance another extension.
Since version 24 GNU Emacs includes a built-in package manager accessible with thelist-packages
command that allows users to search for and install packages. Historically, packages were downloaded manually, often distributed through theUsenetnewsgroupgnu.emacs.sources. Over time many popular packages have been included in Emacs by default; for example version 21 began bundlingOrg-mode,Calc, TRAMP, and many others.[34]
![](https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Example_Org_file_showing_planning_for_a_short_trip.png/220px-Example_Org_file_showing_planning_for_a_short_trip.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/GNU_Emacs_showing_a_Magit_buffer.png/220px-GNU_Emacs_showing_a_Magit_buffer.png)
Notable packages include:
- AUCTeX,tools to edit and processTeXandLaTeXdocuments
- Dired,a file manager
- Dissociated press,aRacter-like text generator
- Dunnet,atext adventure
- Emacs Web Wowser(eww), aweb browser.
- Emacs Speaks Statistics(ESS) modes for editing statistical languages like R and SAS
- ERC,anIRCclient[35]
- Eshell,a command lineshellwritten in Emacs Lisp. This allows closer integration with the Emacs environment than standard shells such asbashorPowerShell,which are also available from within Emacs. For example, in Eshell, Elisp functions are available as shell commands and output fromUnix commandscan be redirected to an Emacs buffer.
- Exwm,anX window managerallowingX11apps to be run in an Emacs window.[36]
- Gnus,a full-featurednews client(newsreader) andemail clientand early evidence forZawinski's Law
- Magit,for working with the version control systemGit[37][38]
- MULtilingual Enhancement to Emacs (MULE) allows editing of text in multiple languages in a manner somewhat analogous to Unicode
- Org-modefor keeping notes, maintaining various types of lists, planning and measuring projects, and composing documents in many formats (such asPDF,HTML,orOpenDocumentformats). There arestatic site generatorsusing org mode, as well as an extension, Babel, allowing it to be used forliterate programming.
- Rcirc,anIRCclient[35]
- Superior Lisp Interaction Mode for Emacs (SLIME) extends GNU Emacs into a development environment forCommon Lisp.With SLIME (written in Emacs Lisp) the GNU Emacs editor communicates with a Common Lisp system (using the SWANK backend) over a special communication protocol and provides such tools as aread–eval–print loop,a data inspector and adebugger.
- Texinfo(Info), an online help-browser
Performance
[edit]In its early history, GNU Emacs often ran noticeably slower than rival text editors because the loading andinterpretingof itsLisp-based code incurs a performance overhead. Modern computers are powerful enough to run GNU Emacs with ease, but versions prior to 19.29 (released in 1995) couldn't edit files larger than 8 MB. The file size limit was raised in successive versions, and32 bitversions after GNU Emacs 23.2 can edit files up to 512 MB in size. Emacs compiled on a 64-bit machine can handle much larger buffers.[39]
While GNU Emacs is largely written in Emacs Lisp, it makes extensive use of natively compiled C code to improve performance. In addition to its own C code, it uses external libraries such aslibxml2for parsingXML.Packages installed by the user can load dynamic modules.[40]
Since version 28.1, Emacs can natively compile Emacs Lisp files vialibgccjit
,as opposed to justbyte compilingthem, resulting in a significant boost in performance.[41][42]
Platforms
[edit]GNU Emacs runs on a wide variety ofoperating systems,includingDOS,Windows,[43][44][45]and mostUnix-likeoperating systems, such asLinux,the variousBSDs,Solaris,AIX,HP-UXandmacOS.[46][47][48]Many Unix-like systems include Emacs by default.[49]In 2023 an official port forAndroidwas released.[50]Version 23.1 removed supported for some platforms deemed obsolete.[3]
GNU Emacs runs both ontext terminalsand ingraphical user interface(GUI) environments. On Unix-like operating systems, GNU Emacs can use theX Window Systemto produce its GUI either directly usingAthena widgetsor by using a "widget toolkit" such asMotif,LessTif,orGTK+.GNU Emacs can also use the graphics systems native to macOS and Windows to providemenubars,toolbars,scrollbarsandcontext menusconforming more closely to each platform'slook and feel.
Forks
[edit]XEmacs
[edit]![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Xemacs-21.5.b29.png/220px-Xemacs-21.5.b29.png)
Lucid Emacs, based on an early version of GNU Emacs 19, was developed beginning in 1991 byJamie Zawinskiand others at Lucid Inc. One of the best-known forks infree softwaredevelopment 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.[51]After Lucid filed for bankruptcy, Lucid Emacs was renamedXEmacs.[52]XEmacs development has slowed, with the most recent stable version 21.4.22 released in January 2009, while GNU Emacs has implemented many formerly XEmacs-only features. This has led some users to proclaim XEmacs' death.[53]
Other forks of GNU Emacs
[edit]Other forks, less known than XEmacs, include:
- Meadow– a Japanese version for Microsoft Windows[54]
- SXEmacs– Steve Youngs' fork of XEmacs[55]
- Aquamacs – a version which focuses on integrating with the Apple Macintosh user interface
- Remacs – an incremental port of GNU Emacs to theRustprogramming language, incomplete and no longer maintained as of 2023.[56]
Release history
[edit]Changes in each Emacs release are listed in a NEWS file distributed with Emacs.[57]Changes brought about bydowngradingto the previous release are listed in an "Antinews" file, often with some snarky commentary on why this might be desirable.[58]
Version | Release date | Significant changes[59] |
---|---|---|
29.4 | June 22, 2024 | Emergency maintenance release. Arbitrary and possibly malicious shell commands are no longer run when turning on Org mode.[60][61][62][63][64][65] |
29.3 | March 24, 2024 | Emergency maintenance release. Arbitrary and possibly malicious Lisp code is no longer evaluated as part of turning on Org mode.[66] |
29.2 | January 18, 2024 | Bugfix release[67] |
29.1 | July 30, 2023 | AddsTree-sitterparser integration and a pureGTKfrontend enablingWaylandsupport. Bundles popular packages includinglanguage server protocolpackage Eglot, package manager use-package, and csharp-mode forC# programming.[68][69][70] |
28.2 | September 12, 2022 | A bug-fix release with no new features.[71] |
28.1 | April 4, 2022 | Native compilation of Lisp files. Text shaping with HarfBuzz and drawing with Cairo. Support for loading Secure Computing filters. Much improved display of Emoji and Emoji sequences. Mode-specific commands. Emacs shows matching parentheses by default. |
27.2 | March 25, 2021 | Mainly a bugfix release.[72] |
27.1 | August 10, 2020 | Built-in support for arbitrary-size integers. Text shaping with HarfBuzz. Native support for JSON parsing. Better support for Cairo drawing. Portable dumping used instead of unexec. Support for XDG conventions for init files. Additional early-init initialization file. Lexical-binding is used by default. Built-in support for tab bar and tab-line. Support for resizing and rotating of images without ImageMagick. |
26.3 | August 28, 2019 | New GPG key for GNU Emacs Lisp Package Archive (ELPA) package signature checking. |
26.2 | April 12, 2019 | Emacs modules can now be built outside of the Emacs tree source. Compliance with Unicode version 11.0. |
26.1 | May 28, 2018 | Limited form of concurrency with Lisp threads. Support for optional display of line numbers in the buffer. Emacs now uses double buffering to reduce flicker on the X Window System. Flymake has been completely redesigned. TRAMP has a new connection method for Google Drive. New single-line horizontal scrolling mode. A systemd user unit file is provided. Support for 24-bit colors on capable text terminals.[73] |
25.3 | September 11, 2017 | Emergency release to fix a security vulnerability in Emacs.[74] |
25.2 | April 21, 2017 | Mainly a bugfix release.[75] |
25.1 | September 17, 2016 | Support for loading shared/dynamic libraries (modules). Validation of TLS/SSL certificates. New minor mode 'electric-quote-mode' for using curved quotes. Character folding support in isearch.el. Support for embedding native widgets inside Emacs buffers. New and improved facilities for inserting Unicode characters.[76] |
24.5 | April 10, 2015 | Mainly a bugfix release.[77][78] |
24.4 | October 20, 2014 | Support for ACLs (access control lists) and digital signatures of Emacs Lisp packages. Improved fullscreen and multi-monitor support. Support for saving and restoring the state of frames and windows. Improved menu support on text terminals. Another built-in web browser (M-x eww ). A new rectangular mark mode (C-x SPC ). File notification support.[79]
|
24.3 | March 10, 2013 | Generalized variables are now in core Emacs Lisp, an update for the Common Lisp emulation library, and a new major mode for Python.[80] |
24.2 | August 27, 2012 | Bugfix release[81] |
24.1 | June 10, 2012 | ELPA, support for native color themes, optional GTK+3, support for bi-directional input, support for lexical scoping in Emacs Lisp[82] |
23.4 | January 29, 2012 | Fixes a security flaw.[83] |
23.3 | March 10, 2011 | Improved functionality for using Emacs with version control systems. |
23.2 | May 8, 2010 | New tools for using Emacs as anIDE,including navigation across a project and automatic Makefile generation. New major mode for editing JavaScript source. In GUIs, the cursor is hidden while the user types. |
23.1 | July 29, 2009 | Support foranti-aliasedfonts onXthroughXft,[84]betterUnicodesupport, Doc-view mode and new packages for viewingPDFandPostScriptfiles, connection to processes throughD-Bus(dbus), connection to theGNU Privacy Guard(EasyPG), nXML mode for editingXMLdocuments, Ruby mode for editingRubyprograms, and more. Use of theCarbonGUI libraries onMac OS Xwas replaced by use of the more modernCocoaGUI libraries. |
22.3 | September 5, 2008 | GTK+ toolkit support, enhanced mouse support, a new keyboard macro system, improved Unicode support, and drag-and-drop operation on X. Many new modes and packages including a graphical user interface to GDB, Python mode, the mathematical tool Calc, and the remote file editing system Tramp ( "Transparent Remote (file) Access, Multiple Protocol" ).[85] |
22.2 | March 26, 2008 | New support for the Bazaar, Mercurial, Monotone, and Gitversion controlsystems. New major modes for editing CSS, Vera, Verilog, and BibTeX style files. Improved scrolling support in Image mode. |
22.1 | June 2, 2007 | Support for the GTK+ graphical toolkit, support for drag-and-drop on X, support for the Mac OS X Carbon UI, org-mode version 4.67d included[86] |
21.1 | October 20, 2001 | Support for displaying colors and some other attributes on terminals, built-in horizontal scrolling, sound support, wheel mouse support, improved menu-bar layout, support for images, toolbar, and tooltips, Unicode support |
20.1 | September 17, 1997 | Multi-lingual support |
19.34 | August 22, 1996 | Bug fix release with no user-visible changes[87] |
19.31 | May 25, 1996[88] | Emacs opensX11frames by default, scroll bars onWindows 95andNT,subprocesses onWindows 95,recover-session to recover multiple files after a crash, some[[doctor.el]] features removed to comply with the USCommunications Decency Act[87]
|
19.30 | November 24, 1995 | Multiple frame support on MS Windows, menu bar available on text terminals,pc-select package to emulate common Windows and Macintosh keybindings.[87]
|
19.29 | June 19, 1995[89] | Significant improvements to performance, font support, and image handling. It offered faster performance, expanded font options, including scalable fonts, and enhanced image format support. Additionally, it improved internationalization features and introduced more customization options, further enhancing the user experience. |
19.28 | November 1, 1994 | First official v19 release. Support for multiple frames using the X Windowing System; VC, a new interface for version control systems, font-lock mode, hexl mode forhexadecimalediting. |
18.59 | October 31, 1992 | Emacs 18.59 included enhancements and bug fixes compared to previous versions of Emacs 18.x. |
18.53 | February 23, 1989 | Emacs 18.53 introduced support for font-locking, which allowed syntax highlighting in different programming modes. This feature greatly enhanced the readability of code by highlighting different language elements with distinct colors or styles. It also included various bug fixes and improvements over previous versions. |
18.52 | August 17, 1988 | Introducedspook.el ,a library for adding some "distract theNSA"keywords to every message you send.[90]
|
18.24 | October 2, 1986 | Server mode,[91]M-x disassemble ,Emacs can open TCP connections,emacs -nw to open Emacs in console mode onxterms.
|
17.36 | December 20, 1985 | Backup file version numbers |
16.56 | July 15, 1985 | First Emacs 16 release. Emacs-lisp-mode distinct from lisp-mode,[92]remove all code fromGosling Emacsdue to copyright issues[93] |
13.8? | March 20, 1985 | First release. However, the VAXSIG VAX85b DECUS tape has version 13.8 with file dates of June 19, 1985 with RCS files dated March 31, 1985. It's a badly damaged copy. Version 13.9 is referenced in the news file,[92]so 13.8 may have been the first release since there are no other 13.x releases named. |
References
[edit]- ^Stefan Kangas (22 June 2024)."Emacs 29.4 released".Retrieved22 June2024.
- ^"GNU Emacs",Analysis Summary,Open Hub
- ^ab"Emacs machines list".
- ^Fusco, John (2007-03-06).The Linux Programmer's Toolbox.Pearson Education.ISBN9780132703048.
- ^Cameron, Debra; Elliott, James; Loy, Marc; Raymond, Eric; Rosenblatt, Bill (2005).Learning GNU Emacs."O'Reilly Media, Inc.".ISBN9780596006488.
- ^"Debian – details of package Emacs in wheezy".
- ^"NEWS.1–17".
There is a new version numbering scheme. What used to be the first version number, which was 1, has been discarded since it does not seem that I need three levels of version number. However, a new third version number has been added to represent changes by user sites. This number will always be zero in Emacs when I distribute it; it will be incremented each time Emacs is built at another site.
- ^"GNU Emacs FAQ".
A version number with two components (e.g., '22.1') indicates a released version; three components indicate a development version (e.g., '23.0.50' is what will eventually become '23.1').
- ^Stoll, Clifford(1988)."Stalking the wily hacker".Communications of the ACM.31(5): 484–497.doi:10.1145/42411.42412.S2CID6956966.
- ^"Re: GNU EMACS".GNU.Retrieved2014-11-16.]
- ^"Re: Looking for a new Emacs maintainer or team".gnu.org Mailing List.Retrieved2008-02-23.;see also"Stallman on handing over GNU Emacs, its future and the importance of nomenclature"
- ^"Feature freeze".lists.gnu.org.
- ^"Emacs gets new maintainer as Richard Stallman signs off".The Register.
- ^"Welcoming a new co-maintainer: Eli Zaretskii".lists.gnu.org.
- ^Free Software Awards winners announced: Eli Zaretskii, Tad (SkewedZeppelin), GNU Jami,Free Software Foundation, 2023-03-18,retrieved2023-03-29
- ^Zaretskii has been contributing to GNU Emacs from 1990s, and was awarded the 2022 Free Software Award by FSF.[15]
- ^"Lars Ingebrigtsen is now one of the Emacs maintainers".lists.gnu.org.
- ^Brockmeier, Joe (Jul 29, 2011)."Say what? GNU Emacs violates the GPL".Network World.Retrieved2016-01-19.
- ^License revoked: Applying Section 4 of the GPL and the lessons of Best Buy to Google’s AndroidArchived2016-01-27 at theWayback Machineby Edward J. Naughton (Aug 8, 2011)
- ^"Emacs Has Been Violating the GPL Since 2009 – Slashdot".developers.slashdot.org.29 July 2011.Retrieved2022-01-10.
- ^"Re: Compiled files without sources????".lists.gnu.org.Retrieved2022-01-10.
- ^Halme, Heikki; Heinänen, Juha (1988). "GNU Emacs as a dynamically extensible programming environment".Software: Practice and Experience.18(10): 999–1009.doi:10.1002/spe.4380181006.S2CID8629911.
- ^Spinellis, Diomidis; Gousios, Georgios (2009-01-15).Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design."O'Reilly Media, Inc.".ISBN9780596554392.
- ^Heiberger, Richard M.; Holland, Burt (2015-12-23).Statistical Analysis and Data Display: An Intermediate Course with Examples in R.Springer.ISBN9781493921225.
- ^"Saving Emacs Sessions".
- ^"Echo Area".
- ^"A Tutorial Introduction to GNU Emacs".
- ^"Frames – GNU Emacs Manual".
However, it is still possible to create multiple "frames" on text terminals; such frames are displayed one at a time, filling the entire terminal screen
- ^
Cameron, Debra; Rosenblatt, Bill;Raymond, Eric S.(1996).Learning GNU Emacs.In a Nutshell Series (2 ed.). O'Reilly Media, Inc. p. 533.ISBN978-1-56592-152-8.Retrieved2010-11-02.
A face is a font and colour combination.
- ^"Initial Options".
In batch mode, Emacs does not display the text being edited, and the standard terminal interrupt characters such as C-z and C-c have their usual effect. Emacs functions that normally print a message in the echo area will print to either the standard output stream (stdout) or the standard error stream (stderr) instead. (To be precise, functions like prin1, princ and print print to stdout, while message and error print to stderr.) Functions that normally read keyboard input from the minibuffer take their input from the terminal's standard input stream (stdin) instead.
- ^"Emacs Lisp as a scripting language".leancrew.Retrieved2023-06-27.
- ^Stallman, Richard; et al. (1987).GNU Emacs Manual(PDF)(19 ed.). Boston, MA, USA: Free Software Foundation.Bibcode:1987gem..book.....S.Retrieved8 January2022.
- ^"Command Line Arguments".
- ^"Emacs 22.1 released".lists.gnu.org.Retrieved2023-07-05.
- ^abStallman, Richard(2007-06-03)."Emacs 22.1 released".info-gnu-emacs(Mailing list).Retrieved2011-07-31.
- ^Feng, Chris (27 November 2017)."exwm: Emacs X Window Manager"– via GitHub.
- ^Jonas Bernoulli."It's Magit! A Git Porcelain inside Emacs".RetrievedFeb 8,2017.
- ^Petersen, Mickey. "An introduction to Magit, an Emacs mode for Git".Mastering Emacs.RetrievedFeb 8,2017.
- ^"6.1 Does Emacs have problems with files larger than 8 megabytes?".
- ^"Emacs Dynamic Modules".GNU Emacs Lisp Reference Manual.Retrieved2022-04-15.
- ^"Compilation of Lisp to Native Code".GNU Emacs Lisp Reference Manual.Retrieved2022-04-15.
- ^Corallo, Andrea; Nassi, Luca; Manca, Nicola (2020-04-06). "Bringing GNU Emacs to Native Code".European Lisp Symposium 2020.arXiv:2004.02504.doi:10.5281/zenodo.3736362.
- ^B, Ramprasad (2005-06-24)."GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000".Retrieved2006-09-27.
- ^Borgman, Lennart (2006)."EmacsW32 Home Page".Archived fromthe originalon 2007-03-06.Retrieved2006-09-27.
- ^"GNU Emacs on Windows".Franz Inc. 2006.Retrieved2006-09-27.
- ^"Emacs For Mac OS X".Retrieved2022-02-09.
- ^"Carbon Emacs Package".Retrieved2012-06-10.
- ^"Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X".Retrieved2006-09-27.
- ^"gnu.org".gnu.org.Retrieved2023-07-05.
- ^"Emacs | F-Droid – Free and Open Source Android App Repository".f-droid.org.Retrieved2023-06-26.
- ^Stephen J., Turnbull."XEmacs vs. GNU Emacs".Retrieved2012-10-02.
- ^"xemacs(1): Emacs: Next Generation – Linux man page".linux.die.net.Retrieved2023-06-26.
- ^"XEmacs is Dead. Long Live XEmacs!".
- ^"FrontPage – Meadow Wiki".Feb 16, 2012. Archived fromthe originalon 2012-02-16.
- ^"SXEmacs Website".Sxemacs.org. 2009-10-11.Retrieved2009-11-08.
- ^"Remacs".The Remacs github repository.RetrievedFeb 22,2017.
- ^"NEWS.24.5".
GNU Emacs NEWS – history of user-visible changes.
- ^"Antinews".
For those users who live backwards in time, here is information about downgrading to Emacs version 24.5. We hope you will enjoy the greater simplicity that results from the absence of many Emacs 25.2 features.
- ^"Emacs Timeline".jwz.org.Retrieved2022-01-10.
- ^"GNU Emacs Release History".Archivedfrom the original on 2024-07-08.Retrieved2024-07-07.
... 2024-06-22 - Emacs 29.4 released...
- ^"GNU Emacs - GNU Project".Archivedfrom the original on 2024-07-03.Retrieved2024-07-07.
... Emacs 29.4; Released Jun 22, 2024; Emacs 29.4 is an emergency maintenance release.
- ^Kangas, Stefan (2024-06-22)."Emacs 29.4 released".Archivedfrom the original on 2024-06-25.Retrieved2024-07-07.
Emacs 29.4 is an emergency bugfix release; it includes no new features except a small number of changes intended to resolve a security vulnerability uncovered in Emacs 29.3 and earlier.
- ^Corbet, Jonathan (2024-06-24)."Emacs 29.4 released [LWN.net]".LWN.net.Archivedfrom the original on 2024-06-24.Retrieved2024-07-07.
Version 29.4 of the Emacs editor has been released. This is "an emergency bugfix release" fi xing a vulnerability that can cause the editor to execute arbitrary shell code in Org mode.
- ^Kangas, Stefan (2024-06-22)."etc/NEWS: Update for Emacs 29.4".GNU Savannah.Archivedfrom the original on 2024-07-08.Retrieved2024-07-07.
Emacs 29.4 is an emergency bugfix release intended to fix the security vulnerability described below...Arbitrary shell commands are no longer run when turning on Org mode. This is for security reasons, to avoid running malicious commands.
- ^Radchenko, Ihor (2024-06-23)."Arbitrary shell command evaluation in Org mode (GNU Emacs)".From the oss-security mailing list.Archivedfrom the original on 2024-06-24.Retrieved2024-07-07.
Here is a vulnerability in Emacs Org mode...The fix is attached. It is against Org mode git repository. The fix can be applied to older versions of Org mode/Emacs if deemed necessary...The fix has been included into Emacs 29.4 and Org 9.7.5 (released yesterday).
- ^"GNU Emacs - GNU Project".gnu.org.Retrieved2024-03-24.
- ^"GNU Emacs - GNU Project".gnu.org.Retrieved2024-02-21.
- ^"Emacs 29.1 released".
- ^"Changes in Emacs 29.1".
- ^Batsov, Bozhidar (2023-07-30)."Emacs 29.1 Released".Emacs Redux.Retrieved2023-07-30.
- ^"Changes in Emacs 28.2".
- ^"Changes in Emacs 27.2".
- ^"Emacs 26.1 released".lists.gnu.org.Retrieved2018-05-29.
- ^"Changes in Emacs 25.3".
- ^"Changes in Emacs 25.2".
- ^"Emacs 25.1 released".lists.gnu.org.Retrieved2016-09-17.
- ^"GNU Emacs NEWS – history of user-visible changes".2015-04-10.Retrieved2015-04-11.
- ^Petton, Nicolas (2015-04-10)."Emacs 24.5 released".Archived fromthe originalon 2015-04-11.Retrieved2015-04-11.
- ^Morris, Glenn (2014-10-20)."Emacs 24.4 released".Retrieved2014-10-22.
- ^Morris, Glenn (2013-03-10)."Emacs 24.3 released".Retrieved2013-03-16.
- ^Yidong, Chong (2012-08-27)."Emacs release candidate 24.2".Retrieved2012-11-11.
- ^Yidong, Chong (2012-06-01)."Emacs release candidate 24.1".Retrieved2012-06-01.
- ^Yidong, Chong (2012-01-09)."Security flaw in EDE; new release plans".Retrieved2012-02-23.
- ^"emacs-fu: emacs 23 has been released!".Emacs-fu.blogspot. 2009-07-28.Retrieved2009-11-08.
- ^Zawodny, Jeremy(2003-12-15)."Emacs Remote Editing with Tramp".Linux Magazine.Archived from the original on April 17, 2008.Retrieved2010-02-01.
Tramp[...] stands for "Transparent Remote (file) Access, Multiple Protocol."
{{cite web}}
:CS1 maint: unfit URL (link) - ^Free Software Foundation Inc (2007)."Emacs News version 22.1".Retrieved2013-12-29.
- ^abc"NEWS.19".
- ^"Emacs Timeline".
- ^"GNUs Flashes".
- ^"NEWS.18".
- ^"NEWS.18".
Programs such as mailers that invoke "the editor" as an inferior to edit some text can now be told to use an existing Emacs process instead of creating a new editor.
- ^ab"NEWS.1–17".
- ^"Xemacs Internals".
Further reading
[edit]- Stallman, Richard M.(2002).GNU Emacs Manual(15th ed.). GNU Press.ISBN978-1-882114-85-6.
- Stallman, Richard M.(2002)."My Lisp Experiences and the Development of GNU Emacs".Retrieved2007-02-01.
- Chassel, Robert J.(2004).An Introduction to Programming in Emacs Lisp.GNU Press.ISBN978-1-882114-56-6.Archived fromthe originalon 2013-07-03.
- Glickstein, Bob (April 1997).Writing GNU Emacs Extensions.O'Reilly & Associates.ISBN978-1-56592-261-7.
- Cameron, Debra; Elliott, James; Loy, Marc; Raymond, Eric; Rosenblatt, Bill (December 2004).Learning GNU Emacs, 3rd Edition.O'Reilly & Associates.ISBN978-0-596-00648-8.
External links
[edit]![](https://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png)
- Emacs
- Free and open-source Android software
- Free file comparison tools
- Free integrated development environments
- Free software programmed in C
- Free software programmed in Lisp
- Free text editors
- GNU Project software
- Hex editors
- Linux integrated development environments
- Linux text editors
- MacOS text editors
- OpenVMS text editors
- Software using the GPL license
- Unix text editors
- Windows text editors