Desvio à direita 4m antes do prompt com Zsh em Mx ansi-term

10

Recentemente, li Running Shells no Emacs e passo algum tempo para adaptar meu elaborado prompt do Zsh para trabalhar com os recursos limitados de M-x shelle M-x ansi-term.

Após esse esforço, agora finalmente posso usar o Zsh no Emacs, no entanto, há um incômodo - ainda que menor - M-x ansi-term. Eu sempre vejo o texto perdido 4mantes do prompt.

Texto disperso antes do prompt

Como você pode ver, esse fenômeno parece ser independente do tema real do prompt. Também aparece com qualquer um dos prompts internos, mesmo os simples que não usam caracteres de controle sofisticados. Por uma questão de fato, isso acontece mesmo com o prompt padrão, ou seja, se eu iniciar o Zsh sem o meu .zshrc.

Bem, é realmente apenas um pequeno incômodo, e eu realmente não me importaria se não fosse capaz de me livrar dele - prefiro M-x shellmesmo assim, onde esse problema não ocorre.

Mas realmente me irrita o fato de não ter conseguido encontrar a causa desse problema, mesmo tendo tentado depurá-lo. Devo dizer, no entanto, que minha compreensão dos terminais é bastante limitada, então talvez eu tenha perdido o óbvio.

Estou no OS X 10.10. Meu Emacs é 25.0.50, construído diretamente do tronco com o Homebrew, e sem bandeiras especiais. O Zsh é 5.0.5, conforme incluído no Yosemite, mas o problema também ocorre com o 5.0.7 instalado via Homebrew.

Alguém pode esclarecer essa questão?

lunaryorn
fonte
Tente definir a exportação TERM = xterm-256color no seu .zshrc ou (setq system-uses-terminfo nil) .
kmicu
system-user-terminfonão mudou nada. A mudança $TERMcorrigiu o problema, mas essa não pode ser a solução, pode? Afinal, é uma mentira, essencialmente: ansi-termnão é xterm e definitivamente não suporta 256 cores.
lunaryorn
4m é um artefato do código de escape ANSI usado para definir uma cor, por exemplo, \x1b[37;4mespecifica uma cor branca com 37 e texto sublinhado com 4. Não consigo reproduzir o seu problema. Meu zsh é 5.0.7 e 'echo $ TERM' no ansi-term me dá eterm-color , meu emacs é 24.4.1 . Testei também a versão padrão limpa 'env HOME = ~ / tmp / emacstest emacs -Q' e não vejo nenhum problema.
kmicu
@kmicu No OS X 10.10, posso reproduzir consistentemente o problema com emacs -Qnenhuma configuração do Zsh.
Lunardorn

Respostas:

10

Aparentemente, esse problema é causado pela falta de terminfo paraeterm-color . Consegui corrigir o problema seguindo as instruções nessa resposta para instalar uma entrada apropriada no banco de dados terminfo. Especificamente:

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

Ainda não sei por que isso é necessário. term.elna verdade exporta a $TERMINFOvariável que aponta para esse diretório, para que o shell possa encontrar o terminfo. O Zsh parece ignorar o diretório, no entanto…

~/.terminfoPorém, ele olha para que o comando acima disponibilize a entrada terminfo no Zsh.

Ficaria feliz se alguém pudesse fornecer uma explicação melhor ou uma solução que não exija intervenção manual.

lunaryorn
fonte