GNU Emacs

Emacs — The extensible self-documenting text editor

Emacs ist ein Texteditor. Punkt. Wer jedoch bei Texteditor nur an Notepad denkt, liegt verkehrt. Was in Zeiten von Officepaketen unspektakulär und einfach klingt, erweist sich bei näherer Betrachtung als ungemein mächtiges Konzept, das seinem Benutzer große Freiheitsgrade gibt: Durch seine eingebaute Programmiersprache ist Emacs viel mehr als ein bloßer Texteditor. Zahlreiche Erweiterungen und Modi machen Emacs vielmehr zu einem zentralen Werkzeug für alle Tätigkeiten, die mit der Manipulation von Text zu tun haben.

Emacs verfügt von Haus aus über einen eingebauten Kalender, mehrere Mail- und Newsreader, verschiedene Spiele** U. a. eine Implementierung des berühmten Eliza-Programms von Joseph Weizenbaum. Vgl. dazu auch Joseph Weizenbaum, Die Macht der Computer und die Ohnmacht der Vernunft. Frankfurt am Main: Suhrkamp, 1977, S. 14—21., einen Webbrowser, einen FTP-Client, eine eingebaute Kommandozeile und vieles mehr. Selbstverständlich wird der Benutzer auch durch zahlreiche Modi bei Programmier- und Editieraufgaben durch Syntaxhighlighting und -überprüfung unterstützt. Und selbstverständlich ist Emacs freie Software.

Neben der Unterstützung von eher für Programmierer interessanten Sprachen gibt es mit AucTeX und RefTeX auch zwei Modi, die beim Erstellen von (La)TeX-Quelltext helfen. Diese beiden Modi machen Emacs zu dem wohl mächtigsten (La)TeX-Editor überhaupt.

Emacs stellt auch für den Sozial- und Geisteswissenschaftler eine ernsthafte Alternative zu Microsoft Office und Co. dar. In der Hoffnung, der eine oder andere möge sie nützlich finden, stelle ich meine Konfigurationsdateien an dieser Stelle ein, auch die zum Mail- und Newsreader Gnus. Im September 2006 habe ich beim hannöverschen TeX-Stammtisch einen Vortrag zum Thema »LaTeXen mit Emacs: AucTeX, preview-latex und RefTeX« gehalten.

Zur Geschichte von Emacs

Richard M. Stallman schrieb 1976, unterstützt vom MIT-Hacker Guy Steele, die erste Version des Texteditors Emacs** Zu den Anfängen von vgl. Richard M. Stallman, EMACS — The Extensible, Customizable, Self-Documenting Display Editor. In: Proceedings of the ACM SIGPLAN SIGOA symposium on Text manipulation. New York: ACM Press, 1981, S. 147—156., der zunächst eine Sammlung von Makros für den Editor TECO (Tape/Text Editor and COrrector) war (daher der Name »Emacs«: Editor MACroS). Der in den 1960er Jahren am Project MAC entwickelte TECO war im wesentlichen eine Programmiersprache mit reichhaltiger Unterstützung von Methoden zur Textmanipulation. TECO war wie der auf Standard-Unix Editor ed zeilenbasiert. Stallmacs Emacs wiederum war in TECO geschrieben, aber ähnlich wie Bill Joys vi ein visueller Editor. Im Gegensatz zu vi unterschied Emacs zusätzlich nicht mehr zwischen einem Kommando- und einem Einfüge-Modus (insert mode). Emacs zeichnete zudem seine Erweiter- und Veränderbarkeit zur Laufzeit aus, d. h. Benutzer konnten während der Editor lief neue Funktionen hinzufügen bzw. bestehende verändern. Die Änderungen in der Funktionalität waren sofort verfügbar, ein Neustart nicht erforderlich.

Stallman verteilte diesen »Extensible, Customizable Self-Documentung Display Editor« unter der Bedingung, daß alle Erweiterungen ebenfalls öffentlich zugänglich gemacht würden: »I called this arrangement ›the Emacs commune.‹ (...) As I shared, it was their duty to share; to work with each other rather than against.«** Steven Levy, Hackers. Heroes of the Computer Revolution. London u. ö.: Penguin Books, 1994, S. 216.

In dieser »Emacs commune« sind bereits die GNU General Public Licence und das Copyleft antizipiert.

Während der originale Emacs wie TECO für die ITS auf der PDP 10 geschrieben war, diente er vielen Editoren auf anderen Computersystemen als Vorbild. Die berühmtesten sind SINE (»SINE Is Not EMACS«), EINE (»EINE Is Not EMACS«) und, für die Lispmaschine, ZWEI (»ZWEI Was EINE Initially«) von Michael McMahon and Daniel Weinreb. Eine Emacs-Version für Multics stammt von Bernard Greenberg.** Vgl. Bernard S. Greenberg, Multics Emacs. The History, Design and Implementation. 1979, 1996. Multics Emacs war in Maclisp, einem Lispdialekt, geschrieben. Lisp, so stellte sich heraus, bot eine bessere Erweiterbarkeit als die vorherigen Implementierungen.** Stallman, EMACS, a. a. O., S. 154. James Gosling, der später die Programmiersprache Java erfand, schrieb 1981 eine Version für Unix, die in C geschrieben war, aber ebenfalls eine an Lisp angelehnte Erweiterungssprache bot.** Vgl. James Gosling, A redisplay algorithm. In: Proceedings of the ACM, a. a. O., S. 123—129.

Im Januar 1984 verließ Stallman das MIT, um sich ganz dem GNU-Projekt zu widmen. Der Schritt war notwendig, weil sonst Stallmans Arbeit Eigentum des MIT geworden wäre.** Richard M. Stallman, The GNU Operating System and the Free Software Movement. In: Chris DiBona, Sam Ockman und Mark Stone (ed.), Open Sources. Voices from the Open Source Revolution. Sebastopol, Ca.: O'Reilly, 1999, S. 53—70}, S. 57. Das MIT AI Lab stellte ihm jedoch weiterhin seine Ressourcen zur Verfügung. Das erste Programm, an dem Stallman arbeitete, war eine neue Implementation seines Texteditors Emacs. GNU Emacs war nun ein eigenständiges Programm, dessen Kern in einer in C geschriebenen Lispmaschine bestand. Die eigentlichen Editorfunktionalität war in Lisp geschrieben und daher leicht zu erweitern. Eine erste hinreichend stabile Version erschien im März 1985. Diese trug gleich die Versionsnummer 13. Versionen 1 bis 12 hat es nie gegeben, frühere Versionen wurden nach dem Schema »1.x.x« numeriert. Nach dem Erscheinen von Version 1.12 wurde jedoch die vorangestellte »1« fallengelassen. Erste weitere Verbreitung fand GNU Emacs mit der Version 15.34, die am 7. Mai 1985 erschien.** Eine Zeitleiste von der Geschichte von Emacs findet sich hier. Diese ersten Versionen enthielten zunächst noch Code des Gosling Emacs, der jedoch mit dem Erscheinen von Version 16.56 im Juli 1985 entfernt wurde. Stallman verkaufte Emacs-Kopien für $ 150, um sich seinen Lebensunterhalt zu finanzieren. »In this way, I started a free software distribution business, the precursor of the companies that today distribute entire Linux-based GNU systems.«** Stallman, The GNU Operating System, a. a. O., S. 58. 1991 kam es zu einer Spaltung in der Emacs-Entwicklung, als der Hersteller von Supercomputern Lucid Inc. eine eigene Version veröffentlichte: Lucid Emacs. Der Fork** Eine solche Spaltung der Codebasis eines Softwareprojekts wird fork genannt. — fork heißt auch ein zentraler Unix-Systemaufruf, der eine Kopie eines Prozesses erstellt. zwischen GNU und Lucid Emacs ist einer der berühmtesten in der Geschichte freier Software. Jamie Zawinski, der originale Autor von Lucid Emacs, dokumentiert auf seiner Website die Auseindersetzung infolge des Forks. Nach dem Konkurs von Lucid 1994 wurde ihre Version in XEmacs umbenannt. XEmacs und GNU Emacs sind die heute am meisten benutzten Emacsderivate; die letzten stabilen Majorreleases GNU Emacs 21 und XEmacs 21.4 wurden im Oktober bzw. April 2001 veröffentlicht. Die Veröffentlichung von GNU Emacs 22 steht unmittelbar bevor.

Die Entwicklung des XEmacs scheint hingegen eingeschlafen zu sein. Wer heute einen Wechsel zu Emacs plant, sollte sich für GNU Emacs entscheiden. Dabei ist generell die Beta-Version 22 der offiziell als stabil deklarierten Version 21 vorzuziehen, da zahlreiche Pakete bereits auf die neuen Funktionen der kommenden Version bauen und die ältere nicht mehr vollständig unterstützt wird.



www.cacert.org
© 2006 Oliver Heins <olli@sopos.org>
GnuPG-Key: https://sopos.org/pgp/olli.asc
GnuPG-Fingerprint: F27A BA8C 1CFB B905 65A8 2544 0F07 B675 9A00 D827
Letzte Änderung dieser Seite: Mittwoch, 29. November 2006, 10:04.