caracteres estranhos no buffer de shell do emacs

5

Meu emacs lista estranhos caracteres de escape em buffers de shell:

me@ubuntu:~//configuration.template/hooks$ 
me@ubuntu:~//configuration.template/hooks$ ls
[0m[01;32mpost-commit[0m  [01;32mpost-commit~[0m  [01;32mpost-update[0m  
[01;32mpost-update~[0m  [01;32mpre-commit[0m  [01;32mpre-commit~[0m  [01;32mupdate[0m      update~

Alguém sabe como posso consertar isso?

    
por zedoo 20.10.2010 / 10:32

3 respostas

3

Esses caracteres são sequências de controle que mudam de cor. Essas seqüências não funcionam no emacs *shell* buffers: elas são exibidas quase diretamente.

Você deve alterar o arquivo de inicialização do shell (provavelmente ~/.bashrc ) para que ls use cores apenas nos terminais que os suportam. Na prática, é provável que isso signifique em todos os tipos de terminal diferentes de dumb (que é o tipo de terminal fornecido em *shell* buffers). O tipo de terminal é indicado na variável de ambiente TERM , então você pode fazer algo assim:

if [ "$TERM" != "dumb" ]; then
  alias ls='ls --color=auto'
fi
    
por 20.10.2010 / 17:13
5

"ansi-color-for-comint-mode" manipula algumas cores em shells. Não é perfeito, mas ajuda. Para ligá-lo, vá até o seu shell e faça [M-x]ansi-color-for-comint-mode-on[RET] .

-John

    
por 21.10.2010 / 20:44
0

Em uma nota relacionada, se você está vendo este problema com o comando emacs grep, digite isto no prompt do comando:

grep --color=NEVER -nH -e "searchstring" *
    
por 02.06.2012 / 08:52

Tags