GNU Emacs puede ser un excelente editor (como no?) también para SGML, XML, o derivados tan populares com XHTML o DocBook. Esta receta concretamente introduce el uso del paquete psgml, aunque hay otros.
A parte del consabido resalte de sintaxis y la inestimable indentación automática de bloques, Emacs ofrece otra gran ayuda para la edición de XML.
Emacs entiende el DTD asociado al XML en cuestión y te ofrece una lista de los elementos XML susceptibles de ser insertados en un punto concreto del documento. Con esto te aseguras que validará el DTD o Schema que uses. Además te ahorra escribir los elementos en si y los paréntesis angulares (<>) que siempre son un latazo.
Como ya he dicho hay varios modos para edición de XML en Emacs tales como nXML-mode, pero yo recomiendo PSGML (al menos en esta receta
). Así que instala:
Aunque el último sólo lo necesitas si vas a usar DocBook y además es probable que ya lo tengas como dependencia de GNOME.
Para que el modo XML arranque automáticamente al iniciar Emacs y tengas un agradable coloreado de sintaxis es recomendable incluir estas pocas líneas en tu .emacs:
(defun psgml-ext () (setq sgml-set-face t) ; without this, all SGML text is in same color (setq sgml-markup-faces '((comment . font-lock-comment-face) (start-tag . font-lock-keyword-face) (end-tag . font-lock-keyword-face) (doctype . font-lock-builtin-face) (entity . font-lock-constant-face))) ) (setq-default sgml-indent-data t) (add-hook 'sgml-mode-hook 'psgml-ext) ; immediate syntax coloring (setq sgml-auto-activate-dtd t)
Aquí tienes muchas más definiciones útiles para el .emacs que sirve para afinar más aún el modo SGML.
Para muchos de los comandos que se incluyen a continuación es necesario que definas un prólogo en el documento. Por ejemplo, en el caso de XHTML puede ser algo como:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
y para DocBook
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.docbook.org/xml/4.3/docbookx.dtd">
Como cualquier modo de Emacs digno de ser usado, PSGML tiene más combinaciones de teclas que las que cualquier humano podría aprender en su vida
. Así que sólo pondré las que considero más útiles. Para algunos es determinante dónde esté el cursor o dónde se haga click.
| Insertar elemento (y cierre) | C-c C-e (o Mayus-Click Derecho) |
| Insertar elemento (apertura) | C-c < |
| Cerrar el elemento actual | C-c / |
| Cambiar elemento | C-c = |
| ‘Etiquetar’ un bloque | C-c C-r |
| Ir al comienzo del elemento | M-C-a |
| Ir al final del elemento | M-C-e |