Desviarse 4m antes del prompt con Zsh en Mx ansi-term

10

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 shelly 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 4mantes del aviso.

Texto perdido 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 shelltodos 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?

Lunaryorn
fuente
Intente configurar export TERM = xterm-256color en su .zshrc o (setq system-uses-terminfo nil) .
kmicu
system-user-terminfoNo cambió nada. El cambio $TERMsolucionó el problema, pero esa no puede ser la solución, ¿verdad? Después de todo, es una mentira, esencialmente: ansi-termno es xterm, y definitivamente no admite 256 colores.
lunaryorn
4m es un artefacto del código de escape ANSI utilizado para definir un color, por ejemplo, \x1b[37;4mespecifica 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.
kmicu
@kmicu En OS X 10.10, puedo reproducir constantemente el problema con emacs -Qy sin configuración de Zsh.
Lunaryorn

Respuestas:

10

Aparentemente, este problema se debe a la falta de terminfo paraeterm-color . Logré solucionar el problema siguiendo las instrucciones en esa respuesta para instalar una entrada apropiada en la base de datos terminfo. Específicamente:

$ tic -o ~/.terminfo /usr/local/share/emacs/25.0.50/etc/e/eterm-color.ti

Todavía no estoy seguro de por qué eso es necesario. term.elen realidad exporta la $TERMINFOvariable 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.

Lunaryorn
fuente