Problemas con Emacs en OpenSuse Tumbleweed
Llevo unos días, desde que apareció la versión 27.1 de Emacs en el repositorio de OpenSuse Tumbleweed ─la distribución de GNU/Linux que utilizo─, con un problema persistente durante la ejecución de mi editor favorito: Emacs.
Wrong type argument: stringp, (require . info)
Además lo hacía de forma intermitente y no muy consistente. Por poner un ejemplo, cuando lanzaba el editor en una consola proporcionándole el fichero que quería editar, digamos tal que así:
emacs -nw ~/proyectos/miproyecto/fichero.erl
El erlang-mode
funcionaba sin ningún problema y podía editar el
código con la comodidad que proporciona su modo correspondiente...
Aparecían otros problemas, por ejemplo al abrir un directorio en
Dired
, mostraba un warning tal que:
Warning (emacs): Fail create hash table buffer: #<buffer :~/proyectos/miproyecto/> stdout: reason: (end-of-file)
No le di mucha importancia, porque pensaba que era algún paquete
obsoleto de versiones anteriores y no me puse a buscar por pereza:
cargar el depurador, ejecutar el init.el
paso a paso a ver qué
paquete da por culo, intentar arreglar el fallo o condenarlo al
ostracismo hasta que el mantenedor lo arregle. En fin, un montón de
incomodidades que asumir cuando la molestia era mínima: podía trabajar
con normalidad.
El problema fue cuando hace dos días dejó de funcionar magit
; esto
ya no era tolerable y me puse a indagar cómo solucionar el problema.
Y como he dicho antes, comencé a cargar el init.el
poco a poco...
no encontré nada.
Cambié de filosofía: arrancar con Emacs pelado e ir haciendo la
carga de paquetes uno a uno, sólo los necesarios. El problema
persistía, sin inmutarse, incluso cargando Emacs con la opción -q
.
Busqué información del error por los foros y la wiki de Emacs y no encontré nada. Pregunté a algunos amigos que saben de esto mucho más que yo y no encontré respuesta: a todo el mundo le funcionaba la versión 2.7 perfectamente. La conclusión de esa investigación: «debo ser yo»... bueno, más bien debe ser mi configuración o algo ¿Habré depurado mal?
Pues nada, a insistir. Habré depurado mi init.el
como tres o
cuatro veces. No ha sido tiempo perdido porque encontré algunas cosas
mejorables que he aprovechando que por Valladolid pasa el Pisuerga...
sin embargo, el problema persistía contumaz. Tan cabezón él, que
estuvo a punto de ganarme en cabezonería.
De casualidad, me dio por arrancar una de las veces el Emacs
llamando a /usr/bin/emacs-gtk
y... el problema no existe. ¿Cómo?
¿Qué está pasando aquí? Pues eso, que el problema no está en Emacs
sino en otro sitio. Investigando un poco, he visto que en mi sistema
están instalados varios ejecutables del editor, algo que ya conocía
pero que nunca le prestas atención. Concretamente están: emacs-gtk
,
emacs-x11
y emacsclient
. Además, también hay un script en bash
que selecciona qué ejecutable lanzar según los parámetros y otras
circunstancias, que se llama emacs
. Cuando llamo al script se
produce el error, cuando llamo directamente al ejecutable que sea,
está libre de errores y advertencias.
Solución: He creado mi propio script emacs
. Para no interferir
con el paquete de la distro lo he colocado en mi directorio
~/opt/bin/
. En el directorio ~/opt/
tengo todas esas aplicaciones
y herramientas que las instalo desde código fuente para mi usuario. Y
para la ejecución de programas, tiene preferencia sobre los más
generales del sistema. El script que me he hecho no puede ser más
fácil y simple, no vayamos a cagarla de nuevo con la tontería:
/usr/bin/emacs-gtk $@
Ese simple script ha venido a solucionar un problema muy tonto, permitiéndome seguir trabajando como hasta ahora.
Conclusión
Hoy más que un artículo es una anotación y no explico grandes herramientas sino pequeños problemas con sus pequeñas soluciones. Lo hago más para acordarme en sucesivas actualizaciones que estoy corriendo una versión simplificada de un script que seguramente arreglarán los mantenedores del paquete en breve. Y también, por si acaso a otros usuarios les ha ocurrido lo mismo, y como yo, no han encontrado nada, ninguna referencia, de cómo poder solucionarlo.