Login
Newsletter
Mi, 21. Mai 2003, 23:35

Vorlagen in GNU Emacs

Wenn man neue Dateien anlegt, kopiert man oftmals zuerst einen bestimmten Text hinein.

Dies kann für Quelltext etwa ein Copyright-Hinweis sein oder im Falle einer Texinfo-Datei auch ein umfangreicheres Grundgerüst. GNU Emacs bringt alles Nötige bereits mit, um diese Aufgabe leicht zu automatisieren. Die folgenden Zeilen müssen dazu der Datei ~/.emacs hinzugefügt werden.

Als erstes muss man das Autoinsert-Feature laden und den entsprechenden Minor-Mode aktivieren:

(require 'autoinsert)
(auto-insert-mode 1)

Das gewünschte Verhalten kann über die Variable auto-insert eingestellt werden; wird diese auf nil gesetzt, wird kein Text eingefügt, hingegen sorgt der Wert t dafür, dass der Text eingefügt und der neue Puffer als modifiziert markiert wird. Jeder andere Wert bewirkt, dass der Text zwar eingefügt wird, der Puffer aber anfänglich als unmodifiziert gilt.

(setq auto-insert t)

Eine weitere Einstellung ist auto-insert-query: Wird diese Variable auf nil gesetzt, wird vor dem Einfügen nicht nachgefragt, ob wir dies überhaupt wollen.

(setq auto-insert-query nil)

Die auto-insert Funktion muss natürlich noch dem entsprechenden Hook hinzugefügt werden:

(add-hook 'find-file-hooks 'auto-insert)

Nun können wir uns der eigentlichen Funktionalität zuwenden. Zuerst stellen wir ein, in welchem Verzeichnis unsere Vorlagen zu finden sind. Beachten Sie dabei unbedingt, dass diese Angabe mit einem Schrägstrich enden muss, sonst wird es nicht funktionieren!

(setq auto-insert-directory "~/templates/")

Welche Vorlagen verwendet werden, wird über die Variable auto-insert-alist konfiguriert, deren Wert eine entsprechende assoziative Liste sein muss. Die Möglichkeiten hier sind sehr vielseitig, weshalb hier nur auf zwei einfache Möglichkeiten eingegangen werden soll. Ein Element der Liste kann ein Paar sein, dessen CAR einen Modus beschreibt und dessen CDR den Dateinamen enthält. Alternativ kann im CAR auch ein regulärer Ausdruck stehen.Ein möglicher Wert für auto-insert-alist ist also:

(setq auto-insert-alist
 '((scheme-mode. "template.scm")
 (texinfo-mode. "template.texi")
 ("\\.\\(c\\|h\\)$". "template.c")))

Da reguläre Ausdrücke in Emacs nicht besonders schön sind, ist es empfehlenswert, M-x re-builder zu verwenden, um sie zu erstellen. Mit diesem Werkzeug können Sie, während Sie einen regulären Ausdruck eingeben bereits sehen, welche Stellen in einem Puffer er »matcht«. So kann man direkt testen, ob der Ausdruck auch wirklich das aussagt, was man möchte.

Kommentare (Insgesamt: 21 || Alle anzeigen )
Re[2]: Editor-Flamewar (Hainer, Mi, 10. November 2004)
Re: Editor-Flamewar (erkules, Fr, 30. Mai 2003)
Re[2]: Ist das auch Möglich bei vi? (erkules, Fr, 30. Mai 2003)
set EDITOR_FLAMEWAR=0 (rainer, Di, 27. Mai 2003)
Re: Editor-Flamewar (Hirni, Sa, 24. Mai 2003)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten