Cores no cygwin sendo exibidas como códigos ANSI brutos

5

Ao executar o Mercurial da linha de comando com a extensão colorida , as cores aparecem como esperado no prompt de comando do Windows ( %código%). No entanto, no cygwin, as cores estão aparecendo como os códigos ANSI subjacentes (por exemplo: cmd.exe ).

Quando eu procurei por uma solução, pareceu mais comum as cores funcionarem no cygwin, mas não no prompt de comando. Esqueci de instalar algo útil no cygwin que ativaria a exibição de cores?

Eu experimentei o problema tanto no Windows 7 64-bit quanto no Vista 32-bit machine. Eu tentei os dois ←[0;34;1m e bash shells. Eu posso ver cores nos dois shells se eu fizer algo como tcsh .

    
por Ash 09.09.2010 / 14:22

2 respostas

6

Quando você usa o console Cygwin, a interpretação das seqüências de controle é feita pela DLL do Cygwin. Essa DLL, claro, só é vinculada aos programas Cygwin, portanto, um programa que não seja o Cygwin, como o Mercurial, não poderá fazer uso disso.

Então, por que funciona quando é executado em um console cmd.exe, o que não entende as seqüências de controle? Meu palpite é que o Mercurial usa a API do console do Windows quando acha que ele é executado em um console e controla sequências quando acha que está sendo executado em um terminal. Talvez isso dependa do termo TERM, então tente o que acontece se você não tiver concluído TERM.

Caso contrário, tente executá-lo em um terminal Cygwin, como mintty ou rxvt. Lá, a diferença é que as seqüências de controle são interpretadas por esses programas em vez da DLL do Cygwin.

    
por 09.09.2010 / 14:49
3

No seu conjunto de arquivos .hgrc

[color]
mode = ansi

ou

[color]
mode = auto
    
por 09.09.2010 / 15:01