Inhalt

3. Emacs-Modi

Emacs-Modi sind unterschiedliche Verhaltensformen und Charakteristika, die für unterschiedliche Zwecke an- und ausgeschaltet (oder natürlich auch angepasst) werden können. Es sind Modi, die einen Editor (Emacs) gleichermaßen gut verwendbar machen, sowohl Dokumentationen zu schreiben, in einer Vielzahl von Sprachen (C, C++, Perl, Python, Java und viele mehr) zu programmieren, eine Homepage zu erstellen, E-Mails zu verschicken, Usenet News zu lesen, über die eigenen Termine auf dem Laufenden zu bleiben und sogar Spiele zu spielen.

Emacs-Modi sind einfach Lisp-Code-Bibliotheken, die den Emacs auf irgendeine Art und Weise erweitern, verändern oder optimieren.

3.1 Haupt- vs. Untermodi

Es gibt im Wesentlichen zwei Moditypen: Haupt- und Untermodi (Major und Minor Modes). Der Unterschied ist nicht ganz einfach zu begreifen, wenn man noch nicht hin und wieder mit einigen von ihnen gearbeitet hat, aber versuchen wir es mal.

Zu einer bestimmten Zeit kann nur ein Hauptmodus aktiv sein. Es können aber viele Untermodi zu einer bestimmten Zeit aktiv sein. Hauptmodi tendieren dazu, sprach- oder funktionsspezifisch zu sein, während es sich bei Untermodi um kleinere und weniger spezifische Einrichtungen handelt, die funktionsübergreifend sind.

Klingt ein bisschen abstrakt, versuchen wir also ein Beispiel. Es gibt einen Modus, den ich ziemlich oft benutze, um ganz normale Textdateien zu schreiben. Er heißt »text-mode«. Dieser Modus wurde zum Schreiben von freiem, unformatiertem Text entwickelt, wie einer README Datei. Er kann Wörter und Absätze identifizieren und stellt im Allgemeinen sicher, dass das passiert, was ich erwarte, wenn ich die normalen Navigationstasten verwende.

Wenn ich einen Text als Lesefutter für den menschlichen Konsum schreibe, will ich natürlich, dass er gut aussieht. Er sollte einen passenden Zeilenumbruch haben - nach einer angemessenen Anzahl von Zeichen und so weiter. Um Zeilenumbrüche zu ermöglichen, rufe ich einfach den Untermodus »auto-fill« auf. Dieser Untermodus versucht, das Richtige zu tun, während ich vor mich hintippe und das Ende der Zeile erreiche. Die Tatsache, dass es ein Untermodus ist, bedeutet, dass er mit einigen unterschiedlichen Hauptmodi arbeiten kann. Meine Vorstellung davon, was das Richtige ist, wenn ich am Zeilenende bin, ist eine andere, wenn ich in einem »text-mode« bin oder zum Beispiel im »java-mode«. Ich will nicht, dass mein Java-Code umgebrochen wird, als wäre er ein englischer Text. Aber ich will meine Kommentarblöcke in meinem Java-Code umgebrochen haben. Der »auto-fill« Modus ist smart genug, das herauszukriegen

Die Entwickler verschiedener Emacs-Modi haben gute Arbeit geleistet, in dem sie sicher gestellt haben, dass Dinge, die als Untermodi arbeiten sollten, auch Untermodi sind.

Wenn Sie sich noch einmal die ASCII-Skizze eines Emacs-Bildschirmes ansehen, werden Sie feststellen, dass die Moduszeile den/die Modus/Modi anzeigt in dem/denen der Emacs sich befindet. In diesem Fall hieß der Modus »Lisp Interaction«, der der Default-Modus ist. Er ist wirklich nur sinnvoll, wenn man Lisp-Code schreiben will. Aber da fast alles vom Emacs in Lisp geschrieben ist, warum nicht?

3.2 Programmier-Modi

Zuallererst: der Emacs wurde von einem Programmierer für Programmierer entwickelt. Es gibt hochwertige Modi für fast jede populäre Programmiersprache, die man sich denken kann (und sogar einige nicht ganz so populäre). Ich beschreibe nur wenige von ihnen kurz hier.

Die meisten Programmier-Modi teilen einige gemeinsame Charakteristika. Normalerweise machen sie das Folgende ganz oder teilweise:

Zusätzlich gibt es einige nicht-sprachspezifische Modi, die Funktionen unterstützen, die beim Programmieren in vielen Sprachen häufig vorkommen: Dinge wie eine Schnittstelle zu Ihrer Versionskontrollsoftware, automatisches Anfügen von Kommentaren an Ihren Code, Erstellen von Makefiles, Aktualisieren von Change Logs und so weiter.

Wenn man all diese Modi zusammen nimmt und die Reife und Stabilität des Emacs-Codes berücksichtigt, fällt der Vergleich mit kommerziellen Integrated Development Environments (IDEs) für Sprachen wie C++ und Java doch ziemlich gut aus. Und er ist natürlich frei verfügbar.

C/C++/Java

Da die Syntax von C, C++ und Java ziemlich ähnlich ist, gibt es einen Emacs-Modus für alle drei Sprachen (aber auch für Objective-C und IDL). Es ist ein sehr ausgereiftes und vollständiges Paket und in der Emacs-Distribution enthalten. Dieser Modus wird entweder »cc-mode« oder »CC Mode« genannt.

Für weitere Details oder den Download einer neueren Version, besuchen Sie

http://www.python.org/emacs/

Perl

Es gibt eigentlich zwei Modi, um Perl-Code im Emacs zu editieren. Der erste heißt »perl-mode« (wie wohl zu erwarten war) und der zweite »cperl-mode«. Ich kenne mich in dieser Geschichte nicht gut aus und weiß nicht, warum es zwei Modi gibt (steht nicht in der Doku), aber es scheint so, als ob »perl-mode« der Original-Modus war, um Perl-Code im Emacs zu editieren. Er scheint über weniger Merkmale als »cperl-mode« zu verfügen und es mangelt ihm an der Fähigkeit, einige von Perls ausgefalleneren Sprachkonstrukten zu erkennen.

Ich persönlich benutze und empfehle »cperl-mode«, der anscheinend ziemlich aktiv gepflegt wird und genau all die Charakteristika hat, die ich mir überhaupt nur wünschen kann. Die neueste Version findet man hier:

ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs

Aber nehmen Sie mich nicht beim Wort. Probieren Sie beide aus und nehmen Sie den, der am meisten Ihren Bedürfnissen entspricht.

Python

Für Python (eine weitere sehr populäre Skript-Sprache) gibt es auch einen Emacs-Modus. So weit ich weiß, ist er nicht in der GNU Emacs, sondern in der XEmacs-Distribution enthalten. Er funktioniert aber recht gut in beiden Editoren.

Sie können den »python-mode« von der offiziellen Python-Website beziehen:

http://www.python.org/emacs/python-mode/

Weitere

Es gibt viele, viele andere Editier-Modi zur Unterstützung von Programmierern. Diese Modi helfen bei Dingen wie:

und vielen weiteren Dingen. Wenn Sie mehr Informationen dazu möchten, wie man an Modi und Add-Ins kommt, gehen Sie zum letzten Abschnitt dieses Dokuments.

3.3 Arbeiten als Autor

Stellen Sie sich vor, Emacs-Modi sind nicht nur auf die beschränkt, die Code schreiben. Leute die Dokumentationen jeglicher Art schreiben, können auch von einer breiten Auswahl an Emacs-Modi profitieren.

Rechtschreibprüfung (»ispell« Modus)

Autoren vieler Arten von Dokumenten brauchen immer wieder mal eine Hilfe bei der Rechtschreibprüfung. Wenn sie GNU ispell installiert haben, können Sie »M-x ispell« eintippen und den aktuellen Puffer auf seine Rechtschreibung hin überprüfen lassen. Wenn ispell Wörter findet, die er nicht kennt, bekommt man eine Liste möglicher Varianten und kann sich eine oder keine aussuchen. Die Funktion entspricht in etwa der Rechtschreibkorrektur vieler anderer nicht kostenloser Softwarepakete.

HTML (»html-helper-mode«)

Wenn Sie immer wieder mal oder sogar oft HTML-Dateien schreiben, möchten Sie vielleicht den html-helper-mode ausprobieren. Man bekommt ihn unter

http://www.santafe.edu/~nelson/tools/
wie auch die Dokumentation und was damit zu tun hat.

Wie der Namen schon andeutet, kann der html-helper-mode viel für die Leute tun, die noch HTML mit der Hand schreiben, auf die altmodische Art.

TeX (»tex-mode«)

Wenn man Dokumente in TeX schreibt, ist es oft hilfreich, sich den Emacs zu besorgen, um etwas Farbe hinzuzufügen, um die Backslashes, Klammern und andere Buchstaben hervorzuheben. Der tex-mode macht das für Sie.

Obwohl ich nicht mehr viel direkt in TeX schreibe, hat er sich, als ich es noch tat, als ziemlich hilfreich dabei erwiesen, meinen TeX-Code etwas lesbarer zu machen.

SGML (»sgml-mode«)

Das Dokument, das sie gerade lesen, wurde in SGML geschrieben und in das Format konvertiert, in dem sie es lesen. Der sgml-mode hat alle Grundlagen für SGML Dokumente: Validierung, Hervorhebung, Forward-Tag, Backward-Tag, und vieles mehr. Er ist ein Standardbestandteil des Emacs.

3.4 Andere Modi

Natürlich gibt es noch viele andere praktische Modi, die das Leben einfacher machen. Hier folgt nur eine kleine Auswahl der populären:

Versionskontrolle (»vc« Modus)

Der vc Modus hat Schnittstellen zu den meisten der populären Versionskontrollsysteme (RCS, SCCS, CVS). Dies macht es sehr leicht, Dateien ein- und auszuchecken, Releases zu managen etc. Er ist ein Standardbestandteil des Emacs und wird in der Emacs-Dokumentation beschrieben.

Shell Modus (»shell«)

Warum zu einem anderen X Window Fenster oder einer virtuellen Konsole wechseln, nur um ein paar Shell-Kommandos auszuführen? Machen Sie es vom Emacs aus und ersparen Sie sich die Mühe :-).

»M-x shell« ruft eine Shell innerhalb eines Emacs-Puffers auf. Mit diesem Puffer kann man die meisten Sachen machen, die man auch mit einem normalen Shell tun könnte (außer dem Betrieb von Programmen, die den ganzen Bildschirm einnehmen, wie vi oder pine), weil der Emacs hinter den Kulissen mit der wirkichen Shell kommuniziert.

Auch dies ist ein Standardbestandteil des Emacs, so dass man ihn in der Emacs-Dokumentation dokumentiert findet.

Telnet und FTP (»telnet« und »ftp« Modi)

Warum zu einem anderen X Window Fenster oder einer virtuellen Konsole wechseln, nur um Telnet und FTP auszuführen? Machen Sie es vom Emacs aus und ersparen Sie sich die Mühe.(Erkennen Sie schon das Muster ;-)?

Genau wie eine Shell im Emacs zu betreiben, kann man von ihm aus mit Telnet und FTP arbeiten. Versuchen Sie »M-x telnet« oder »M-x ftp«, um es selbst auszuprobieren. Lesen Sie die Dokumentation wegen all der blutrünstigen Details.

Handbuch (»man« Modus)

Warum zu einem anderen X Window Fenster oder einer virtuellen Konsole wechseln, nur um eine Manual Page zu lesen? Machen Sie es vom Emacs aus und ersparen Sie sich die Mühe. Ich verspreche, ich höre jetzt auf.

Genau wie beim Betreiben der Shell innerhalb des Emacs, kann man vom Emacs aus Manual Pages lesen. Versuchen Sie »M-x man« um es selbst auszuprobieren. Lesen Sie die Dokumentation, wenn Sie weitere Informationen möchten.

Ange-FTP

Um die ange-ftp Dokumentation zu zitieren:

Dieses Paket will den Zugang zu Dateien und Verzeichnissen für die Nutzung von FTP vom GNU Emacs aus so einfach und transparent wie möglich machen. Ein Teil der gebräuchlichen Dateiarbeitsvorgänge ist für die Interaktion mit FTP erweitert worden.

Dies bedeutet, dass man Dateien auf weit entfernten Rechnern behandeln kann, als wären sie lokal. Will man also eine Datei auf einem anderen Computer editieren, muss man nur den Emacs anweisen, sie zu öffnen (in dem man eine etwas andere Pfadsyntax benutzt) und er kümmert sich um alle Details beim Login und dem Holen der Datei. Dann, wenn die Datei mit »C-x C-s« gespeichert wird, nimmt ange-ftp die Speicherung vor und schreibt die Datei zurück auf den weit entfernten Rechner.

Die etwas andere Pfadsyntax geht so: Eine myfile benannte Datei in einem user Verzeichnis auf einem my.host.org benannten Rechner kann durch »C-x f« geöffnet werden:

/user@my.host.org:~user/myfile

Auch dies ist ein Standardbestandteil der Emacs-Distribution, sodass man es in der Emacs Dokumentation dokumentiert findet.

Meinen Dank an Etienne Grossman ( etienne@anonimo.isr.ist.utl.pt) für das obige Beispiel.


Inhalt