Saída git colorida no eshell

10

Estou usando o emacs dentro de um terminal mintty (configurado para dizer que é xterm-256color) no cygwin. list-colors-displayfunciona bem. e as cores são exibidas nas listagens direcionadas etc. Agora, defino a cor da git branchramificação atual yellow reverse. No entanto, nem shell nem eshell windows exibem a cor correta; em vez disso, a ramificação atual é mostrada na cor padrão. Em uma ansi-termjanela, ou Fora do emacs, dentro do mesmo terminal, ele é exibido como deveria.

Eu tenho isso no meu .emacs:

(add-hook 'eshell-preoutput-filter-functions  'ansi-color-apply)

Alguma maneira de exibir essas cores dentro das janelas shell ou eshell?


fonte
11
Eu não posso reproduzir isso no eshell com um Emacs gráfico, tendo definido a git config --global color.ui alwaysexecução git diff. Você poderia fornecer etapas mais detalhadas?
rekado
a minha resposta abaixo ajuda você ou algo não está claro?
rekado

Respostas:

5

Eshell e os shell-modedois usam ansi-color.elpara transformar códigos de cores ansi em rostos. ansi-color.elsuporta as seguintes faces:

Parameter  Description        Face used by default
  0        default            default
  1        bold               bold
  2        faint              default
  3        italic             italic
  4        underlined         underline
  5        slowly blinking    success
  6        rapidly blinking   warning
  7        negative image     error

"imagem negativa" é "reversa" e é mapeada para a errorface. Quando eu configuro meu repositório como ...

[color]
        ui = always
[color "branch"]
        current = yellow reverse

... e corro git branch, vejo minhas ramificações locais, e a ramificação atual é renderizada em negrito em amarelo. Quando coloco ponto no texto amarelo e corro describe-face, vejo que ele é de fato renderizado com a errorface.

Você pode personalizar ansi-color-faces-vectorpara atribuir uma face diferente que não errorseja "imagem negativa" / "reversa".

Você não precisa (add-hook 'eshell-preoutput-filter-functions 'ansi-color-apply)usar cores ansi no eshell.

rekado
fonte