Home / LinuxUser / 2002 / 11 / Erste Schritte mit (X)Emacs (Teil 2)

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Jetzt wird gelispelt.

Erste Schritte mit (X)Emacs (Teil 2)

Eigene Funktionen

Wie man in Lisp eigene Funktionen definiert, soll folgendes Beispiel zeigen: Angenommen, wir wollen an der aktuellen Cursorposition durch Drücken der Taste [F2] das aktuelle Datum und die Uhrzeit einfügen, dann könnte dies wie folgt aussehen. (Diesen Programmschnipsel können Sie übrigens, wenn Sie ihn in einem Buffer eingegeben haben, markieren und dann mittels M-x eval-region RET auswerten lassen. Wenn Sie dann die [F2]-Taste drücken, sollte Datumeinfuegen ausgeführt werden.)

(defun Datumeinfuegen ()
 (interactive "*")
 (insert
   (format-time-string "%d. %B %Y" (current-time))
 )
)
(global-set-key [f2] 'Datumeinfuegen)

Mit dem ersten Teil, der mit dem Befehl defun beginnt, definieren wir eine eigene Funktion, die den Namen Datumeinfuegen trägt. Die leere Klammer dahinter bedeutet, dass ihr keine Parameter übergeben werden sollen.

Über interactive wird festgelegt, dass die Funktion über M-x Funktionsname ausgeführt werden kann. Als Parameter erwartet interactive eine Zeichenkette, die angibt, wie die übergebenen Parameter der Funktion interpretiert werden sollen. Doch dazu gleich ein Beispiel.

Mittels insert wird dann das Datum eingefügt werden, das vorher mit format-time-string in die gewünschte Form gebracht wurde. Sodann belegen wir mit global-set-key die [F2]-Taste mit unserer vorher definierten Funktion.

Nun noch ein kleines Beispiel für eine Funktion mit Parametern:

(defun Multiply (x y)
 "Erwartet Eingabe von zwei Zahlen und multipliziert diese."
(interactive "nErste Zahl: \nnZweite Zahl: \n")
(message "%d" (* x y))
)

Bei dieser Funktion haben wir nun die Parameter x und y angegeben. In der zweiten Zeile wird der so genannte "Docstring" für diese Funktion definiert. Mittels C-h f Multiply RET wird er angezeigt. Die Parameter der interactive-Funktion bedeuten Folgendes: Der erste Buchstabe n bedeutet, dass der erste Parameter x eine Zahl ist. Da die Funktion interaktiv ist, also vom Benutzer explizit aufgerufen werden kann, folgt danach eine Zeichenkette, die zur Eingabe der ersten Zahl auffordert. Angezeigt wird sie im Minibuffer. Abgeschlossen wird dieser Teil des Docstrings mit einem Zeilenumbruch (\n). Das Gleiche folgt dann für den Parameter y.

Welche Parameter Sie der interactive-Funktion übergeben können, erfahren Sie über C-h f interactive RET.

Der Zweck heiligt die Mittel

Ein besonderes Feature von XEmacs sind die Modi. Diese verleihen XEmacs beispielsweise abhängig vom Dateityp (HTML, LaTeX und andere) der Datei, die Sie gerade in einem Buffer bearbeiten, besondere, auf dieses Format zugeschnittene Funktionen. So definieren sie etwa bestimmte Tastenkombinationen, die die Bearbeitung oder Erstellung der Datei vereinfachen.

Dabei unterscheidet man zwischen "major"- und "minor"-Modi. Vereinfacht gesagt ergänzt ein minor-Modus einen major-Modus um zusätzliche Eigenschaften. So ergänzt etwa der auto-fill-mode geeignete andere Modi um die Funktion, bei Erreichen einer bestimmten Zeilenlänge die Zeile automatisch umzubrechen. Aber schauen wir uns ein paar interessante Modi und ihre Hauptfunktionen genauer an:

Abbildung 2: XEmacs mit AucTeX

Um den auto-fill-mode zu aktivieren, tragen Sie in ~/.emacs Folgendes ein:

(auto-fill-mode 1)

Alternativ geben Sieim Editor C-u 1 M-x auto-fill-mode ein.

Der abbrev-mode erlaubt Ihnen, Abkürzungen für Wörter festzulegen, die bei Eingabe automatisch erweitert werden: Aktivieren Sie dazu zunächst den Modus mit C-u 1 M-x abbrev-mode oder in ~/.emacs mit (abbrev-mode 1). Danach geben Sie das Wort ein, für das Sie eine Abkürzung definieren wollen, gehen mit dem Cursor hinter das Wort und drücken C-x a g.

XEmacs fragt Sie dann im Minibuffer nach der Abkürzung. Immer wenn Sie nun dieses Kürzel eingeben und dann die [Space]-Taste drücken, wird es durch das eigentliche Wort ersetzt. Mit M-x write-abbrev-file sorgen Sie dafür, dass die von Ihnen definierten Abkürzungen abgespeichert werden.

Wenn Sie keinen Namen angeben, geht der Modus von ~/.abbrev_defs als Standardname aus. M-x read-abbrev-file lädt die Datei beim nächsten Mal wieder ein. Wollen Sie das automatisieren, ergänzen Sie ~/.emacs um den Eintrag (quietly-read-abbrev-file).

Falls Sie eine eigene Homepage verwalten, sollten Sie einen Blick auf den html-mode werfen, der nützliche Funktionen zum Editieren von HTML-Dateien bietet. Geben Sie in einem leeren Buffer M-x html-mode ein, sehen Sie in der Modeline "HTML": Der Modus ist dann für diesen Buffer aktiviert.

Eine Beschreibung zum HTML-Modus erhalten Sie mit C-h m. Es öffnet sich ein neuer Buffer, der alle Tastenkombinationen enthält, die dieser Modus zur Verfügung stellt. Noch mehr Komfort bietet hm--html [5].

Für LaTeX-Benutzer gibt es standardmäßig den latex-mode, aus dem AucTeX-Paket. Geben Sie einfach M-x latex-mode ein und drücken Sie wieder C-h m, um sich über die Funktionen von AucTeX zu informieren. Wie der html-mode bietet auch der latex-mode Syntax-Highlighting, d. h. die HTML- bzw. LaTeX-Befehle werden farblich unterschiedlich dargestellt, so dass der Quelltext übersichtlicher ist. Außerdem können Sie einzelne Elemente ausblenden ("folden"), so dass Sie nur die Teile sehen, die für die Bearbeitung gerade wichtig sind.

XEmacs bietet noch sehr viele weitere Modi, darunter welche für nahezu jede Programmiersprache. Laden Sie Ihre ~/.emacs und geben Sie dann M-x lisp-mode RET ein, sehen Sie, wie dies für Lisp selbst aussieht. Eine Übersicht über die Modi, die bei Ihrer XEmacs-Version schon installiert sind, erhalten Sie über M-x apropos RET mode RET. Daneben finden sich im Netz unzählige weitere. Beachten Sie aber, dass sich nicht alle für XEmacs eignen, da manche Modi Befehle verwenden, die nur Emacs bietet.

Abbildung 3: XEmacs im hm--html-mode

Glossar

Variablen

Eine Variable ist ein Platzhalter für einen Wert, z. B. eine Zahl oder eine Zeichenkette.

Parameter

Als Parameter bezeichnet man Variablen, die einem Befehl übergeben werden, damit er sie verarbeiten kann und ein entsprechendes Ergebnis zurückliefern kann. Dieses Ergebnis nennt man Rückgabewert.

Symboloperator

Immer wenn man einem Befehl nicht den Wert einer Variablen, sondern die Variable selbst übergeben will, muss der Variablen der Operator ' vorangestellt werden. (setq a b) würde a den Wert von b zuweisen, während (setq a 'b) ihr b selbst zuweist. a und b sind damit identisch und enthalten nicht nur dieselben Werte.

Infos

[1] Lisp-Reference: C-h i in XEmacs eingeben, dann unter XEmacs den Unterpunkt Lispref wählen.

[2] XEmacs Customization: http://www.xemacs.org/Links/customization.html

[3] Bob Glickstein: "Writing GNU Emacs Extensions", O'Reilly, 1997, ISBN 1-56592-261-1, USD 29.95.

[4] Otto Mayer: "Programmieren in Common Lisp.", Spektrum Akad. Vlg., 1995, ISBN: 3860257102, EUR 24,95

[5] hm--html: ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib/

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...