Quero vista (e / ou editar) texto a cores em emacs, como é a produção em ls -l --color=always
, tree...
ou o que quer.
O texto a que me refiro existe em um arquivo. Quando abro esse arquivo no emacs, desejo poder vê-lo colorido ou alterná-lo para mostrar as seqüências de escape ANSI (SGR).
ansi-color.el
parece ser o que eu preciso, mas não consegui fazer nenhuma coloração das seqüências de escape ANSi , mas vejo azul-negrito para bytes de controle individuais (por exemplo, ^A
e ^[
) ... não estou claro se isso é um recurso ansi-color
, mas acho que é.
De acordo com os comentários da ansi-color.el , ele pode funcionar com strings e regiões, mas mesmo isso não parece funcionar. Por exemplo, a função ansi-color-apply-on-region
não é reconhecida por M-x
. Diz: "Sem correspondência"
Eu adicionei (require 'ansi-color)
ao meu arquivo .emacs e até mesmo (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
. Não recebo nenhum erro ou aviso quando o emacs inicia, por isso estou preso.
Como faço para que as funções padrão funcionem e elas podem ser aplicadas automaticamente ao abrir um arquivo cujo nome está com sufixo .col
?
A solução a seguir permite ler (e não salvar) arquivos contendo seqüências de cores ANSI. Os nomes de arquivos devem ter uma
.txt
extensão.Coloque a biblioteca no formato tty
~/.emacs.d/site-lisp/
e adicione essas linhas ao seu~/.emacs
arquivo init.fonte
ansi-color
e leva um passo adiante para, como o seu link diz, "... O objetivo do tty-format.el é apenas tornar * esses arquivos visíveis." * .. " esses arquivos " são aqueles que contêm escape ANSI SGR seqüências e backspacing .. Obrigado ..tty-format
. Parece ser superior à minha função de invólucro ou ao modo derivado de 3 linhas. :) O Emacs tem dificuldade em lidar com muitas sobreposições, e é assim que a cor das cores é a ansi-color. Há oportunidades para otimização adicional aqui, porque não precisamos colorir todo o buffer, apenas a parte que está sendo exibida.Muito obrigado @enzotib pela sua solução!
Como complemento à sua solução, aqui está uma maneira de torná-la explicitamente solicitável pelo usuário:
e automático para arquivos que não sejam apenas * .txt ou README:
Dessa forma, você pode substituir suas seqüências de escape por cores sem alterar o arquivo original, diferentemente das soluções utilizadas
ansi-color-apply-on-region
.fonte