Raggio trascinato 4 m prima del prompt con Zsh in Mx ansi-term


10

Di recente ho letto Running Shells in Emacs e ho trascorso un po 'di tempo ad adattare il mio elaborato prompt di Zsh per lavorare con le capacità limitate di M-x shelle M-x ansi-term.

A seguito di questo sforzo, sono finalmente in grado di usare Zsh da Emacs, ma c'è un fastidio, sebbene minore, con M-x ansi-term. Vedo sempre il testo smarrito 4mprima del prompt.

Testo smarrito prima del prompt

Come puoi vedere, questo fenomeno sembra essere indipendente dal tema attuale. Appare anche con qualsiasi prompt integrato, anche quelli semplici che non usano alcun personaggio di controllo. È un dato di fatto, succede anche con il prompt predefinito, vale a dire se avvio Zsh senza il mio .zshrc.

Bene, in realtà è solo un piccolo fastidio, e non mi dispiacerebbe davvero se non fossi in grado di liberarmene, preferisco M-x shellcomunque comunque, dove questo problema non si verifica.

Ma mi dà davvero fastidio il fatto che non sono stato in grado di trovare la causa di questo problema, anche se ho davvero cercato di eseguire il debug. Devo dire, tuttavia, che la mia comprensione dei terminali è piuttosto limitata, quindi potrei aver perso l'ovvio.

Sono su OS X 10.10. My Emacs è 25.0.50, costruito direttamente dal bagagliaio con Homebrew e senza bandiere speciali. Zsh è 5.0.5, incluso in Yosemite, ma il problema si verifica anche con 5.0.7 installato tramite Homebrew.

Qualcuno può fare luce su questo problema?


Prova a impostare export TERM = xterm-256color nel tuo .zshrc o (setq system-usi-terminfo nil) .
kmicu,

system-user-terminfonon ha cambiato nulla. La modifica ha $TERMrisolto il problema, ma non può essere la soluzione, vero? Dopotutto, è una bugia, in sostanza: ansi-termnon è un xterm e sicuramente non supporta 256 colori.
lunaryorn,

4m è un artefatto del codice di escape ANSI utilizzato per definire un colore, ad esempio \x1b[37;4mspecifica un colore bianco con 37 e il testo sottolineato con 4. Non riesco a riprodurre il problema. Il mio zsh è 5.0.7 e 'echo $ TERM' in termini ansi mi dà eterm color , il mio emacs è 24.4.1 . Ho provato anche a pulire la versione predefinita 'env HOME = ~ / tmp / emacstest emacs -Q' e non vedo alcun problema.
kmicu,

@kmicu Su OS X 10.10, posso riprodurre costantemente il problema con emacs -Qe senza alcuna configurazione Zsh.
lunaryorn,

Risposte:


10

Apparentemente questo problema è causato dalla mancanza di terminfo pereterm-color . Sono riuscito a risolvere il problema seguendo le istruzioni in quella risposta per installare una voce appropriata nel database terminfo. In particolare:

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

Non sono ancora sicuro del perché sia ​​necessario. term.elesporta effettivamente la $TERMINFOvariabile che punta a quella directory, quindi la shell dovrebbe essere in grado di trovare il terminfo. Zsh sembra ignorare la directory, sebbene ...

~/.terminfoTuttavia, guarda , quindi il comando precedente rende la voce terminfo disponibile per Zsh.

Sarei felice se qualcuno potesse fornire una spiegazione migliore o una soluzione che non richieda un intervento manuale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.