Aus Linux-Magazin 10/2013

Der programmierbare Editor Emacs

© 3355m, 123RF.com

Den Texteditor Emacs gibt es seit Jahrzehnten und die Community entwickelt ihn stets weiter. Zu seinem Erfolgsrezept gehören die Erweiterbarkeit, eine freie Lizenz und eine kreative Anhängerschaft.

Ein Texteditor, mit dem man Mail lesen, Aufgaben planen und Tetris spielen kann? Den hatte der spätere GNU-Gründer Richard Stallman vermutlich noch nicht im Sinn, als er 1976 die erste Inkarnation des Emacs programmierte: Es handelte sich um Makros für Teco, den Texteditor des Betriebssystems ITS, das damals im Artificial Intelligence Lab des MIT lief. Laut Legende stammt von diesen “Editing Macros” auch der Name Emacs.

ITS und Teco sind längst verschwunden, ebenso die folgende Emacs-artige Software wie Zmacs, der Multics Emacs und die erste Version für Unix, geschrieben vom Java-Erfinder James Gosling 1981 [1]. Überlebt hat Stallmans Variante, der GNU Emacs [2], den er 1985 veröffentlichte. Er ist heute noch der Leib-und-Magen-Editor vieler Programmierer, sofern sie nicht eine integrierte Umgebung wie Eclipse benutzen – oder den ewigen Emacs-Konkurrenten Vi (siehe Kasten “Vi – der andere Editor”).

Vi – der andere Editor

Ein sehr langlebiges Projekt, das unter Linux noch immer zum Einsatz kommt, heißt Vi (für “visual”). Der Texteditor stammt aus dem Jahre 1976. Ihm gingen unterschiedliche Varianten des zeilenorientierten Unix-Editors Ed von Ken Thompson voraus, der wiederum auf dem noch älteren Qed basierte, der Mitte der 60er Jahre entstanden war und dessen Geschichte Dennis Ritchie aufschrieb [7].

Dank seines geringen Ressourcenbedarfs wurde Vi zum Standardeditor vieler Systeme. Das Terminalprogramm kann mit seiner ausgefeilten Tastenbelegung mehrere Befehle kombinieren. So löscht [D][W][.][.][.] den Rest des Worts rechts vom Cursor und wiederholt den Vorgang dreimal. Die kurzen Kommandos erlauben fließendes Arbeiten.

Der Erfolg von Vi beruht zudem auf den drei Arbeitsmodi: Im Command Mode lassen sich simple Arbeiten erledigen (Zeilen löschen, Wörter suchen), im Insert Mode kann man Text eingeben und im Ex Mode lassen sich komplexe Befehle absetzen, etwa Suchen und Ersetzen. Seinen Weg in eine Linux-Distribution fand der Originaleditor aber erst im Jahre 2002. Gunnar Ritter nahm um 2000 herum den Quellcode des Vi-Erfinders Joy aus 2.11-BSD und portierte ihn für Linux und Free BSD. Doch erst zwei Jahre später änderte AT&T die Quellcode-Lizenz und erlaubte es, aus dem Original-Vi ein Open-Source-Projekt [8] zu machen.

Andere waren schneller: Ende Januar 1990 veröffentlichte Steve Kirkendall mit Elvis einen Vi-Klon für Minix und schickte ihn an die Newsgroup Comp.os.minix [9]. Als Elvis zwei Jahre später Version 1.5 erreichte, ließ sich die Software auch unter Linux ausführen [10]. Zur selben Zeit tauchte Vim unter Linux auf [11]. Bram Moolenar veröffentlichte ihn Ende 1991 für Amiga, er basierte auf einem Vi-Klon namens Stevie. Der Sprung auf Linux gelang mit Version 1.24.

Vim gilt als erfolgreichste Vi-Variante unter Linux, viele Distributionen leiten Vi-Aufrufe automatisch an Vim weiter. Grund dafür ist neben dem Mehr an Features gegenüber Vi sicherlich auch Vimscript, das es erlaubt, den Editor um eigene Funktionen oder Makros zu erweitern.

Für den Erfolg des GNU Emacs, der nun fast drei Jahrzehnte anhält, dürften mehrere Faktoren gesorgt haben, auch wenn der derzeitige Chef-Maintainer Stefan Monnier dafür hauptsächlich eine große Portion Glück verantwortlich macht.

Teil eines großen Plans

Der Editor sollte kein einzelnes Softwareprodukt werden, Richard Stallman hatte ein komplettes System alternativer Unix-Software im Sinn. Das machte er erstmals im September 1983 im Usenet bekannt [3]: “Von Thanksgiving an werde ich ein vollständiges, Unix-kompatibles Softwaresystem namens GNU (für Gnu ‘s Not Unix) schreiben und an jeden kostenlos abgeben, der es brauchen kann. Unterstützung in Form von Zeit, Geld, Programmen und Hardware wird dringend benötigt.”

Wenn der Plan auch nicht in allen Details aufgegangen ist, muss doch jeder zugeben, dass GNU-Software wie GNU Compiler Collection (GCC) und Bash heute wichtige Fundamente Unix-artiger Systeme bilden. Der Editor Emacs war unter diesen Komponenten das erste fertige Programm, das das junge GNU-Projekt 1985 vorzeigen konnte, während GCC noch in der Entwicklung steckte.

Dazu kam eine Lizenz, die das Weitergeben von Code ermöglichte, wie es in der akademischen Welt des MIT üblich gewesen war. Anfangs war dies die GNU Emacs General Public Licence (GPL), später machte Stallman sie für weitere Programme tauglich und veröffentlichte sie 1989 als GNU General Public License (GPL) 1.0. Sie erklärt das Teilen von Code nicht nur zu einem Recht, sondern zur Pflicht, und setzt damit die Idee eines “andersrum funktionierenden” Copyright um – des Copyleft.

Features einfach nachladen

Daneben hatte sich Richard Stallman schon früher Gedanken über die Technik eines erweiterbaren und anpassbaren Editors gemacht. In einem Aufsatz für die “ACM Conference on Text Processing” [4] hielt er 1981 die grundlegende Architektur fest: Ein Basissystem, das sich zur Laufzeit durch das Laden von Bibliotheken um Features erweitern lässt. Damit legte er sich auf Programmiersprachen und Implementierungen fest, die das können. Neben Snobol und APL machte dies Lisp zum Kandidaten. Schon Gosling hatte für seine Emacs-Ausgabe ein reduziertes Lisp-artiges System namens Mocklisp gewählt.

In einer Rede [5] hat Stallman 2002 näher ausgeführt, wie er mit Lisp vertraut wurde und schließlich Emacs Lisp schuf, für das der Editor heute einen eingebauten Interpreter besitzt. Die Erweiterbarkeit mittels einer leistungsfähigen Programmiersprache gilt allgemein als Erfolgsrezept von Emacs.

Lernen und einarbeiten

Der bekennende Emacs-Fan Steve Yegge schreibt in seinem Blog [6]: “Emacs hat die gleiche Lernkurve wie HTML: Man kann ganz einfach anfangen und sich langsam hocharbeiten, ohne auf einmal einen Riesenschritt bei der Komplexität zu machen.” Das beginnt schon beim Emacs-Initiationsritual, dem Anlegen der persönlichen Konfigurationsdatei »~/.emacs« .

Emacs ist bestens für die Erweiterbarkeit gerüstet: Die Bearbeitungseinstellungen für bestimmte Programmiersprachen oder Datenformate, die Modes, sind in einzelnen Lisp-Dateien abgelegt, die der Anwender mit der eingebauten Kommandozeile lädt. Diese Major Modes lassen sich durch Minor Modes um ausgewählte Features erweitern.

Der Editor hält zahlreiche Anknüpfungspunkte für selbst geschriebenen Code bereit. Diese so genannten Hooks laufen etwa beim Öffnen, Schließen oder Speichern einer Datei ab und führen den eingehängten Code aus. Außerdem bietet Emacs Lisp vorgefertigte Variablen für Editorkomponenten wie Fenster, Cursor und markierte Abschnitte. Das macht ihn zum “Rohmaterial, um Editoren zu bauen”, wie es Bob Glickstein in seinem Buch “Writing GNU Emacs Extensions” von 1997 ausdrückt [12]. Die Beispiele aus diesem Standardwerk funktionieren übrigens mit der aktuellen Emacs-Version immer noch.

Massenhaft Erweiterungen

Free-Software-Lizenz plus Programmierbarkeit haben zu einem reichen Repertoire an Emacs-Erweiterungen geführt. Es gibt kaum eine Programmiersprache, mag sie noch so neu oder esoterisch sein, für die es keinen Emacs-Modus gibt. Man kann dank der Erweiterung Gnus mit Emacs Mail und Usenet-News lesen, ihn als textbasierten Browser verwenden, ja sogar PDF-Dateien anzeigen.

Anschluss an Debugger, Testwerkzeuge und Versionskontrollsysteme findet der Editor ebenfalls. Daneben ist eine gewisse Spielfreudigkeit der Emacs-Liebhaber zu bemerken, die im Emacs-Doctor gipfelt – einer Art Eliza-Programm, das wie ein Psychoanalytiker einen Dialog mit dem Benutzer führt (Abbildung 1, [13]).

Abbildung 1: Code-Ausschnitt: Dank seiner leistungsfähigen Erweiterungssprache Emacs Lisp kann der Editor sogar als Psychoanalytiker mit dem Anwender in Dialog treten.

Abbildung 1: Code-Ausschnitt: Dank seiner leistungsfähigen Erweiterungssprache Emacs Lisp kann der Editor sogar als Psychoanalytiker mit dem Anwender in Dialog treten.

Diese Vielfalt gibt Stallman Recht, wenn er das Projekt Emacs als unvorhersehbar einordnet [4]: “Weder ich noch jemand anderes konnte sich einen erweiterbaren Editor vorstellen, ehe ich ihn geschrieben hatte, oder seinen Wert schätzen, ehe er ihn erlebt hatte.”

Viele einst externe Emacs-Erweiterungen sind im Laufe der Zeit in den Lieferumfang des Editors eingegangen. Zu den jüngeren Zugängen zählen Orgmode, ein Modus für Notizen und Aufgabenplanung, und ELPA, ein Paketmanager, der seinerseits Emacs-Erweiterungen aus Internet-Repositories installiert.

Die Neuzugänge müssen unter GPL lizenziert sein, daneben ist es Voraussetzung, dass der Entwickler das Copyright an die Free Software Foundation überträgt. Das verschafft der Organisation zumindest nach US-amerikanischem Recht die Möglichkeit, Gerichtsverfahren um den Code und die Einhaltung der GPL durchzufechten. Das Emacs-Projekt galt nicht immer als aufgeschlossen. In seinem Aufsatz “The Cathedral and the Bazaar” [14] schrieb der Open-Source-Programmierer Eric S. Raymond 1997, der Führungsstil Stallmans entspreche eher einer Kathedrale mit einem strengen Chefarchitekten als einem bunten Basar.

Der Fork: XEmacs

Einige Entwickler stießen sich sogar dermaßen an Projektleiter und FSF, dass sie 1991 einen Fork des freien Quellcodes vornahmen und einen eigenen Emacs daraus machten. Zunächst hieß er Lucid Emacs, nach der Firma, bei der Jamie Zawinski, einer der Unzufriedenen, damals arbeitete. Ab 1994 trägt er den bekannteren Namen XEmacs [15]. Gegenstand des Zwists war die anstehende Version 19 des GNU-Emacs, sie hatte sich verzögert. Zugleich wollten einige Entwickler dem bisherigen Terminalprogramm bessere GUI-Unterstützung beibringen.

Was dann genau passierte, ist Thema eines jahrzehntelangen Disputs. Richard Stallman findet [16], die Neuerer hätten nicht das Gespräch mit dem Projekt gesucht und zudem bestehende Features neu implementiert. Laut Zawinski [17] akzeptierte die Free Software Foundation die Verbesserungsvorschläge und den dazugehörigen Code nicht.

Dieser Fork, in Emacs-Kreisen sogar als Schisma bezeichnet, war die größte Krise des Projekts und hat die Gemeinde um den freien Editor nachhaltig gespalten. Viele Autoren von Erweiterungen dagegen bemühten sich, ihre Emacs-Lisp-Dateien unter beiden Emacs-Varianten gleichermaßen funktionstüchtig zu halten.

In der GPL erlaubt

In einer Mail von 1992 [17] schreibt Richard Stallman immerhin recht versöhnliche Worte: “Ich kann es den Leuten nicht übel nehmen, dass sie die Lücke gefüllt haben, die die FSF gelassen hat. Eines der Ziele von Copyleft ist es ja, so etwas zu ermöglichen – damit der Fehler eines zentralen Maintainers nicht eine ganze Community behindert.”

XEmacs enthält eine Datei, die seine Vorzüge gegenüber der GNU-Variante hervorhebt (Abbildung 2): eine echte Werkzeugleiste, bessere Menüs, horizontale und vertikale Scrollbalken in allen Fenstern, Schriften und Farben auch in einem Terminal. Fast alles hat der GNU Emacs inzwischen nachgeholt, abgesehen von grafischen Tabs für die geöffneten Dateien. Die Entwicklung des XEmacs ist mittlerweile eingeschlafen – das leise Ende eines spektakulären Forks.

Abbildung 2: Verblasster Mythos: Der Fork XEmacs preist seine Vorzüge gegenüber der GNU-Variante der Software.

Abbildung 2: Verblasster Mythos: Der Fork XEmacs preist seine Vorzüge gegenüber der GNU-Variante der Software.

Editor-Folklore

Emacs hat als lange bestehendes Projekt eine eigene Folklore und Kultur geschaffen. Dazu gehören Szene-eigene Witze, beispielsweise Emacs sei ein Akronym für “Escape-Meta-Alt-Control-Shift”, was sich über die Tastaturkürzel zur Bedienung lustig macht. Mindestens ebenso seltsam mutet an, wenn sich Richard Stallman bei Auftritten zum “St. IGNUcius” von der “Kirche des Emacs” stilisiert (Abbildung 3). Interessanterweise passt zu diesem klerikalen Scherz auch das Reden vom Emacs-Schisma.

Abbildung 3: Sympathisch-kauzig oder eher peinlich? Emacs-Erfinder Richard Stallman inszeniert sich auf dem Desktop Summit 2009 als St. IGNUcius von der Kirche des Emacs.

Abbildung 3: Sympathisch-kauzig oder eher peinlich? Emacs-Erfinder Richard Stallman inszeniert sich auf dem Desktop Summit 2009 als St. IGNUcius von der Kirche des Emacs.

Derzeit tragen offiziell 167 Personen Code zu GNU Emacs bei, in der Geschichte des Editors waren es insgesamt über 1300. Dabei spielt Richard Stallman immer noch eine wichtige Rolle. Obwohl er mittlerweile nur noch einer von rund zehn Maintainern ist – und nicht einmal der oberste –, wiegt sein Wort auf der Mailingliste [18] mehr als das anderer.

Emacs-Zukunft

Trotz seiner vielen Jahre bleibt Emacs in Bewegung: In den ELPA-Archiven findet man modernste Features, zum Beispiel eine Implementierung von Websockets in Emacs Lisp. Die größte Neuerung dürfte das Projekt Guile-Emacs [19] sein. Guile dient dem GNU-Projekt als Standard-Compiler und -VM für Lisp-artige Sprachen. In Zukunft soll er den alten Emacs-Lisp-Interpreter ersetzen. Damit gibt es nur noch eine Implementierung zu pflegen, zudem bringt Guile Nebenläufigkeit. Dadurch könnte Emacs etwa im Hintergrund E-Mails abrufen, während er vorne gerade eine Lisp-Bibliothek kompiliert.

Ein weiterer Plan ist der Ausbau zur integrierten Entwicklungsumgebung, wie der Chef-Maintainer Stefan Monnier dem Linux-Magazin mitteilte. Daneben gibt es eine Forderung, die nach einer längst überfälligen Modernisierung klingt: Emacs Lisp soll Namespaces bekommen, um mehr Ordnung in die zahllosen Erweiterungspakete zu bringen [20]. Erstaunlich, dass es 30 Jahre auch ohne gegangen ist.

Infos

  1. Sam Williams, “Free as in Freedom”: http://oreilly.com/openbook/freedom/index.html
  2. GNU Emacs: http://www.gnu.org/software/emacs/
  3. Richard Stallman, “Initial GNU Announcement”: http://www.gnu.org/gnu/initial-announcement.en.html
  4. Richard Stallman, “EMACS: The Extensible, Customizable Display Editor”: http://www.gnu.org/software/emacs/emacs-paper.html
  5. Richard Stallman, “My Lisp Experiences and the Development of GNU Emacs”: http://www.gnu.org/gnu/rms-lisp.html
  6. Steve Yegge’s Blog: http://steve-yegge.blogspot.de
  7. QED: http://cm.bell-labs.com/cm/cs/who/dmr/qed.html
  8. Traditional Vi: http://sourceforge.net/projects/ex-vi/
  9. Elvis: https://groups.google.com/forum/#!original/comp.editors/rdUYDzANsMw/ErR-8j1VCfQJ
  10. Elvis läuft auf Linux: https://groups.google.com/forum/#!searchin/comp.os.linux/elvis|sort:date/comp.os.linux/J7y0Vy_9AAg/iviaLaRZtXoJ
  11. Die Story von Vim: http://www.moolenaar.net/vimstory.txt
  12. Bob Glickstein, “Writing GNU Emacs Extensions”, O’Reilly 1997
  13. Emacs-Doctor: http://www.csee.umbc.edu/courses/471/papers/emacs-doctor.shtml
  14. “Eric S. Raymond, “The Cathedral and the Bazaar”: http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/
  15. XEmacs: http://xemacs.org
  16. Richard Stallman, “The Origin of XEmacs”: http://stallman.org/articles/xemacs.origin
  17. Jamie Zawinski, “The Lemacs/FSFmacs Schism”: http://www.jwz.org/doc/lemacs.html
  18. Mailingliste der Emacs-Entwickler: http://lists.gnu.org/mailman/listinfo/emacs-devel
  19. Guile Emacs: http://www.emacswiki.org/emacs/GuileEmacs
  20. Nic Ferrier, “Hatching a plan to add namespaces to Emacs Lisp”: http://nic.ferrier.me.uk/blog/2013_06/adding-namespaces-to-elisp
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
1 Kommentar
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
profdeutsch
10 Monate her

Was soll denn immer dieses “der Emacs”? Man sagt ja auch nicht “der Vim”.

“Für den Erfolg des GNU Emacs,” ⇒ “Für den Erfolg von GNU Emacs,” etc.

Nach oben