Die Fibel für neue Mitarbeiter des FreeBSD-Dokumentationsprojekts
Zurück |  | Weiter

# Kapitel 11. `sgml-mode` und Emacs

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:

`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 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.

`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 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.

`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[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.

`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.

`C-c /`

  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)))

### Fußnoten

[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>.