GNU Emacs como editor XML (o DocBook), con psgml
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.
Introducción
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.
Ingredientes
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:
- psgml
- docbook-xml
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.
Configurar Emacs
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
:
Aquí tienes muchas más definiciones útiles para el .emacs que sirve para afinar más aún el modo SGML.
Prólogo (declaración DOCTYPE)
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:
y para DocBook
Combinaciones útiles
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 |