Alterar cores usadas por 'ls' não funciona no modo "Shell" do Emacs

3

Segui o link para alterar as cores usadas por ls . Isso funciona no bash.

Quando eu abro um buffer do modo "Shell" no Emacs (shell M-x), a mudança não funciona. Gostaria de saber como posso aplicar a mesma alteração ao modo "Shell" do Emacs?

    
por Tim 22.10.2015 / 17:25

2 respostas

2

Algumas versões do ls precisam saber do banco de dados terminfo quais códigos de cores são suportados pelo terminal.

Primeiro, crie o seguinte arquivo (dumb-emacs-ansi.ti):

dumb-emacs-ansi|Emacs dumb terminal with ANSI color codes,
    am,
    colors#8, it#8, ncv#13, pairs#64,
    bold=\E[1m, cud1=^J, ht=^I, ind=^J, op=\E[39;49m,
    ritm=\E[23m, rmul=\E[24m, setab=\E[4%p1%dm,
    setaf=\E[3%p1%dm, sgr0=\E[m, sitm=\E[3m, smul=\E[4m, 

Esta é uma entrada Terminfo que criei com suporte para a marca própria de códigos ANSI do Emacs (suporta apenas 8 cores, tem negrito, itálico e sublinhado como atributos independentes). Compile com tic dumb-emacs-ansi.ti .

Em seguida, adicione ao seu .bashrc:

if [ "$TERM" = dumb ] && [ "$INSIDE_EMACS" ]; then
    export TERM=dumb-emacs-ansi COLORTERM=1
fi

Você pode simplesmente executar a linha de exportação em sua sessão de shell existente para atualizá-la sem reiniciar o bash.

    
por 22.10.2015 / 17:55
1

O Emacs shell mode é um terminal burro que apenas troca strings com o shell; ele não permite sequências de escape de terminal como aquelas que definem cores. Se você quiser um terminal completo no emacs, use M-x term . (Depois de fazer isso, você pode sair dele com C-c k ; term pega todas as chaves normais, já que é um emulador de terminal completo.)

EDIT: A sugestão de usar term está, mas parece que shell-mode de fato permite cores, e ls de alguma forma se recusa a reconhecer esse fato.

    
por 22.10.2015 / 17:42

Tags