Recientemente leí Running Shells en Emacs , y dediqué un poco de tiempo a adaptar mi elaborado mensaje de Zsh para trabajar con las capacidades limitadas de M-x shell
y M-x ansi-term
.
Después de este esfuerzo, finalmente puedo usar Zsh desde Emacs, sin embargo, existe una molestia, aunque menor M-x ansi-term
. Siempre veo el texto perdido 4m
antes del aviso.
Como puede ver, este fenómeno parece ser independiente del tema de solicitud real. También aparece con cualquiera de los mensajes incorporados, incluso los simples que no usan caracteres de control sofisticados. De hecho, incluso sucede con el indicador predeterminado, es decir, si inicio Zsh sin mi .zshrc
.
Bueno, en realidad es solo una molestia menor, y realmente no me importaría si no pudiera deshacerme de ella, prefiero de M-x shell
todos modos, donde este problema no ocurre.
Pero realmente me molesta que no haya podido encontrar la causa de este problema, aunque realmente intenté depurarlo. Sin embargo, debo decir que mi comprensión de los terminales es bastante limitada, por lo que podría haber pasado por alto lo muy obvio.
Estoy en OS X 10.10. Mi Emacs es 25.0.50, construido directamente desde el tronco con Homebrew, y sin banderas especiales. Zsh es 5.0.5, como se incluye con Yosemite, pero el problema también ocurre con 5.0.7 instalado a través de Homebrew.
¿Alguien puede arrojar una luz sobre este tema?
system-user-terminfo
No cambió nada. El cambio$TERM
solucionó el problema, pero esa no puede ser la solución, ¿verdad? Después de todo, es una mentira, esencialmente:ansi-term
no es xterm, y definitivamente no admite 256 colores.\x1b[37;4m
especifica un color blanco con 37 y texto subrayado con 4. No puedo reproducir su problema. Mi zsh es 5.0.7 y 'echo $ TERM' en ansi-term me da color eterm , mi emacs es 24.4.1 . También probé la versión predeterminada limpia 'env HOME = ~ / tmp / emacstest emacs -Q' y no puedo ver ningún problema.emacs -Q
y sin configuración de Zsh.Respuestas:
Aparentemente, este problema se debe a la falta de terminfo para
eterm-color
. Logré solucionar el problema siguiendo las instrucciones en esa respuesta para instalar una entrada apropiada en la base de datos terminfo. Específicamente:Todavía no estoy seguro de por qué eso es necesario.
term.el
en realidad exporta la$TERMINFO
variable que apunta a ese directorio, por lo que el shell debería poder encontrar el terminfo. Zsh parece ignorar el directorio, aunque ...Sin embargo, se ve
~/.terminfo
, por lo que el comando anterior hace que la entrada terminfo esté disponible para Zsh.Me alegraría si alguien pudiera proporcionar una mejor explicación o una solución que no requiera intervención manual.
fuente