Sobre Info y la ayuda de Emacs
Hace unos días me llevé un susto con la ayuda de Emacs. Al abrirla
me encontré que apenas había contenido, todo había desaparecido,
incluidos el manual del editor, el manual de elisp
, el de org
. Un
susto bastante grande, ya que utilizo la ayuda de forma habitual. Ya
he dicho por aquí que suelo olvidar de una vez para otra cómo utilizar
los comandos y las herramientas si no los uso todos los días. Tengo
que refrescar mi memoria y es bastante habitual que consulte la ayuda,
que entre otras cosas, para eso está.
El caso es que había hecho una actualización del sistema operativo y algo debió ir mal y de repente, sólo me aparecían los manuales de tres o cuatro herramientas y ninguno de los de Emacs.
Si pulsaba C-h r
me abría el manual, luego estar estaba. Sin
embargo, en la lista de Info que aparece al pulsar C-h i
no
aparecía. Como sabéis en el menú Help
hay una entrada para Others
manuals
y al llamarlos desde allí, los manuales estaban, los abría y
podía consultarlos. Pero ya estoy muy acostumbrado a pulsar C-h i
y
buscar lo que necesito, no a coger el ratón y tirar de menú.
Para mayor seguridad utilicé el comando info
desde una terminal y
ocurría lo mismo. La página principal no mostraba apenas entradas. Si
llamaba a info
, por ejemplo, como info emacs
, abría el manual de
Emacs pero seguía sin listarlo en el directorio de ayuda principal.
A estas alturas supongo que las preguntas son: ¿he conseguido hacer que aparecieran? y, si es así, ¿cómo? La respuesta a la primera pregunta es sí. A la segunda pregunta, es un poco más larga y por eso lo cuento en esta entrada del blog... pero la respuesta corta podría ser: chapuceando un poco, como buen chapucero que soy.
Archivos info
La ayuda de Emacs como sabéis está basada en otra herramienta de
GNU: info
. Esta herramienta consiste en una serie de archivos que se
escriben mediante un lenguaje llamado texinfo
y que se generan y
guardan con la extensión .info
o .info.gz
. Pueden guardarse en
varios directorios y por ejemplo, en mi .bashrc
tengo añadida la
línea
export INFOPATH=/usr/share/info:/local/share/info:~/opt/share/info
Se puede apreciar dónde se van a buscar los archivos info
,
especialmente, cuando no procede de un paquete de la distribución,
sino que ha sido compilado desde código fuente a local
o a ~/opt
,
según sea el caso.
Sabiendo dónde buscar, encontrar los ficheros fue fácil, estaban donde
cabía esperar y desde ahí, llamar a info fichero
para cargarlos era
sencillo. Así pues, los archivos de información estaban en su sitio,
sin embargo, ni el sistema de ayuda de Emacs ni el directorio
general del comando info
los encontraba.
El archivo dir
Dentro del directorio /usr/share/info
me encontré un fichero de
nombre dir
sin la extensión .info
. Es un fichero de texto,
afortunadamente, y al abrirlo resultó ser el directorio de consulta
de los contenidos. Digo afortunadamente, porque un fichero de texto
se puede editar y el contenido, efectivamente, coincidía con el parco
listado de entradas de la ayuda. Así supuse que ese fichero era el
responsable de todo el problema.
Probé a añadir a mano una entrada de ayuda y funcionó, con una línea tal que:
* Manual de Emacs: (emacs). Manual de referencia de emacs.
Me costó sólo un par de pruebas y el manual de referencia apareció en
el listado de entradas de ayuda de C-h i
. La estructura, como se
puede apreciar es muy simple: un *
en el primer carácter de la línea
y a continuación lo que será el nombre del enlace Manual de Emacs
en
este caso. A continuación, y entre paréntesis, el nombre del fichero
.info
sin la extensión, aquí emacs
. El punto .
a continuación
del paréntesis es importante, porque marca el final del enlace (esto
fue una de las pruebas). Si no se pone, tomará como enlace el
comentario, que lleva punto al final. Por último, en la columna 32
(para que esté alineada con el resto) una breve descripción del
contenido, o comentario.
Conclusiones
Es un poco chapuza, seguramente habrá algún comando o script
que
rehaga el directorio de ficheros info
de alguna manera más o menos
automática. Sin embargo, después de haber estado investigando algo de
tiempo, no encontré la manera. Por eso probé a hacerlo a mano y
funcionó.
Seguramente me habré dejado algún fichero sin meter, supongo que me daré cuenta cuando lo necesite. De momento he metido los más habituales o los que consulto con más frecuencia.
Quizá me ponga en otro momento a hacer algún script
que lo haga
automáticamente, por si vuelve a suceder algo parecido