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 shell
e 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 4m
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 shell
mesmo 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?
system-user-terminfo
não mudou nada. A mudança$TERM
corrigiu o problema, mas essa não pode ser a solução, pode? Afinal, é uma mentira, essencialmente:ansi-term
não é xterm e definitivamente não suporta 256 cores.\x1b[37;4m
especifica 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.emacs -Q
nenhuma configuração do Zsh.Respostas:
Aparentemente, esse problema é causado pela falta de terminfo para
eterm-color
. Consegui corrigir o problema seguindo as instruções nessa resposta para instalar uma entrada apropriada no banco de dados terminfo. Especificamente:Ainda não sei por que isso é necessário.
term.el
na verdade exporta a$TERMINFO
variável que aponta para esse diretório, para que o shell possa encontrar o terminfo. O Zsh parece ignorar o diretório, no entanto…~/.terminfo
Poré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.
fonte