Neuere Emacs- und XEmacs-Versionen verfügen über ein nützliches Lisp-Paket namens PSGML. PSGML (das über den Port editors/psgml installiert werden kann) 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 .xml 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:
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 Sie unsicher sind, 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.
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.
Ruft die Funktion sgml-tag-region
auf, die einen
markierten Textabschnitt mit einem Element umschließt. Dazu markieren Sie zuerst den
Textabschnitt (gehen Sie zum Anfang des Abschnitts und führen Sie C-space aus, dann gehen Sie zum Ende des Abschnitts und führen
erneut C-space aus), danach führen Sie diese Funktion aus. Sie
werden nach dem Namen des einzufügenden Elements gefragt. Dessen Start-Tag wird dann am
Anfang des markierten Textes eingefügt, dessen End-Tag am Ende des markierten Texts.
Ruft die Funktion sgml-untag-element
auf, die Start- und
Endtag des Elements entfernt, innerhalb dessen sich der Cursor befindet.
Ruft die Funktion sgml-fill-element
auf. Diese Funktion
formatiert[1] 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.
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.
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.
Startet die Funktion sgml-insert-end-tag
, die
automatisch das passende End-Tag für das gerade offene Element einfügt.
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:
(defun local-sgml-mode-hook (setq fill-column 70 indent-tabs-mode nil next-line-add-newlines nil standard-indent 4 sgml-indent-data t) (auto-fill-mode t) (setq sgml-catalog-files '("/usr/local/share/xml/catalog"))) (add-hook 'psgml-mode-hook '(lambda () (local-psgml-mode-hook)))
[1] |
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. |
Zurück | Zum Anfang | Weiter |
Häufig verwendete Wörter | Weiterführende Quellen |
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.