Fejezet 11. Az sgml-mode használata az Emacs szövegszerkesztőben

Az Emacs és XEmacs újabb változataihoz tartozik egy psgml nevű, nagyon hasznos csomag (a Portgyűjteményből a editors/psgml portból telepíthetjük fel). Ez a kiegészítés vagy az .xml állományok megnyitásakor töltődik be automatikusan, vagy pedig az M-x sgml-mode parancs begépelésével. Általánosságban véve ez az SGML állományok és a bennük található elemek és tulajdonságok szerkesztésére alkalmas mód.

Az alábbiakban bemutatunk néhány olyan alapvető parancsot ebben a módban, amelyekkel könnyebbé válik a különböző SGML dokumentumok, többek közt a kézikönyv szerkesztése.

C-c C-e

Meghívja az sgml-insert-element függvényt. Ekkor meg kell adnunk az adott pontra beillesztendő elem nevét. Itt a Tab lenyomásával kérhetjük a név kiegészítését, az adott ponton érvénytelen elemek neveit ilyenkor nem érhetjük el.

A szövegbe ekkor bekerülnek az elemhez tartozó kezdő- és zárócímkék. Amennyiben az elemhez még tartoznak más egyéb kötelező elemek is, akkor egyúttal ezek is beszúródnak.

C-c =

Meghívja az sgml-change-element-name függvényt. A parancs használatához álljunk a módosítandó elembe. A végrehajtáshoz meg kell még adnunk azt is, hogy mire akarjuk átírni az elem nevét. Ezután az érintett elem kezdő- és zárócímkéi lecserélődnek.

C-c C-r

Meghívja az sgml-tag-region függvényt. A használatához először jelöljük ki a szöveg egy részét (vigyük a kurzort a kijelölés kezdetéhez, adjuk ki a C-space billentyűparancsot, vigyük a kurzort a kijelölés végéhez és ismét adjuk ki a C-space parancsot). Ezután meg kell adnunk még a bejelölt rész jelöléséhez használni kívánt elemet. Ennek eredményeképpen végül a kijelölt szakasz elejére és végére bekerül az adott elem kezdő- és zárócímkéje.

C-c -

Meghívja az sgml-untag-element függvényt. Álljunk a kurzorral az eltávolítani kívánt elem kezdő- vagy zárócímkéjére és adjuk ki a parancsot. Ekkor az elem kezdő- és zárócímkéi törlésre kerülnek.

C-c C-q

Meghívja az sgml-fill-element függvényt. Ennek hatására az elem, amelyben állunk a kurzorral rekurzívan feldolgozásra kerül (például újraformázódik). Ez a változtatás a tördelést is érinteni fogja, tehát például még <programlisting> elemek esetében is. Ezért mindig csak körültekintéssel alkalmazzuk!

C-c C-a

Meghívja az sgml-edit-attributes függvényt. Ekkor a legközelebbi befoglaló elemhez megnyílik egy másik szerkesztési pufferben az összes hozzá tartozó tulajdonság, értékekkel együtt. Itt a Tab lenyomásával tudunk lépkedni az egyes elemek között, a C-k paranccsal lecserélni egy meglevő értéket egy újra, illetve a C-c C-c paranccsal bezárni a puffert és visszatérni az eredeti dokumentum szerkesztéséhez.

C-c C-v

Meghívja az sgml-validate függvényt. Felajánlja a jelenleg megnyitott dokumentum mentését (amennyiben szükséges) és ellenőrzi az SGML szabvány szerinti érvényességét. A vizsgálat eredménye egy új pufferbe kerül, ahol szépen sorban végig tudjuk nézni az összes hibát és javítani ezeket menet közben.

C-c /

Meghívja az sgml-insert-end-tag függvényt. Bezárja a kurzor előtt megkezdett elemet.

Nyilvánvalóan ebben a módban még vannak további hasznos funkciók, de az említetteket használják a leggyakrabban.

A Dokumentációs Projekten belüli munkához az .emacs állományban a következő bejegyzéseket érdemes megadni a megfelelő tördeléshez, elrendezéshez és sorszélességhez:


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

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.