sgml-mode und
Emacs
Neuere Emacs- und
XEmacs-Versionen verfügen
über ein nützliches Lisp-Paket namens PSGML. PSGML ist
ein so genannter Majormode, der
Funktionen speziell für den Umgang mit SGML-Dateien,
-Elementen und deren Attributen bereit stellt. Emacs aktiviert
PSGML automatisch, wenn eine Datei mit der Endung
.sgml geladen oder der Befehl M-X
sgml-mode eingegeben wird.
Die Arbeit an SGML-Dokumenten wie dem FreeBSD-Handbuch kann
sich wesentlich einfacher gestalten, wenn einige der Funktionen
von PSGML gekannt sind:
C-c C-e
Ruft die Funktion sgml-insert-element
auf, die nach dem Namen des einzufügenden Elements
fragt. Ist dieser eingegeben worden und wurde die
Eingabetaste gedrückt, fügt die
Funktion Start- und Endtag des neuen Elements ein. Sofern
das eingefügte Element laut DTD andere Elemente
enthalten muß, werden diese ebenfalls
miteingefügt.
Falls man unsicher ist, wie der Name des
gewünschten Elements lautet oder welche Elemente an der
aktuellen Position erlaubt sind, können mittels der
Taste Tab alle an dieser
Stelle möglichen Elemente angezeigt
werden. Ebenso ermöglicht Tab die
Vervollständigung eines bereits eingegebenen
Elementnamens.
C-c =
Ruft die Funktion
sgml-change-element-name auf, mit der das
aktuelle Element – das Element zwischen dessen Start-
und Endtag sich der Cursor befindet – ausgewechselt
werden kann. Die Funktion fragt nach dem Namen des neuen
Elements und ersetzt anschließend Start- und Endtag
des alten Elements durch die des neuen Elements.
C-c C-r
Ruft die Funktion sgml-tag-region
auf, die einen markierten Textabschnitt mit einem Element
umschließt. Dazu wird zuerst nach dem Namen des
einzufügenden Elements gefragt, und dann dessen
Starttag am Anfang und dessen Endtag am Ende des markierten
Textes einfügt.
C-c -
Ruft die Funktion sgml-untag-element
auf, die Start- und Endtag des Elements entfernt, innerhalb
dessen sich der Cursor befindet.
C-c C-q
Ruft die Funktion sgml-fill-element
auf. Diese Funktion formatiert
Formatieren bedeutet in diesem Zusammenhang,
dass die Funktion versucht, soviel Zeichen wie
möglich in einer Zeile unterzubringen. Die Stelle,
bis zu der gefüllt und dann der Zeilemumbruch
erfolgt, ist konfigurierbar.
den Inhalt des aktuellen Elements neu. Dieser
Vorgang betrifft auch Elemente wie
programlisting, in denen Leerzeichen und
ähnliches Teil der Formatierung sind. Aus diesem Grund
ist mit sgml-fill-element bedächtig
umzugehen.
C-c C-a
Ruft die Funktion
sgml-edit-attributes auf. Diese
öffnet einen zweiten Puffer mit allen Attributen des
Elements, innerhalb dessen sich der Cursor befindet.
Über Tab kann von einem Attribut zum
nächsten gewechselt werden. Ein existierender
Attributwert kann mit C-k gelöscht
werden. Die Tastenfolge C-c C-c
schließt den Puffer und setzt die Attribute des
Elements entsprechend den Puffervorgaben.
C-c C-v
Ruft die Funktion sgml-validate auf,
die zuerst fragt, ob das aktuelle Dokument gespeichert
werden soll und anschließend einen SGML-Validator
aufruft. Die Ausgaben des Validators werden in einem neuen
Puffer angezeigt. Dadurch hat der Benutzer die
Möglichkeit, eventuell vom Validator gefundene Fehler
zu korrigieren.
Zweifellos hat PSGML noch weitere nützliche Funktionen, doch
die hier genannten sind die, die der Autor dieser Fibel am meisten
benutzt.
Um den richtigen Einzug, die Umwandlung von Tabulatoren in
Leerzeichen und die maximale Zeilenlänge für Dokumente des FDPs
sicherzustellen, kann folgender Eintrag in
.emacs vorgenommen werden:
(setq sgml-mode-hook
'(lambda ()
(setq fill-column 70
indent-tabs-mode nil
next-line-add-newlines nil
standard-indent 2)
(auto-fill-mode t)))