Quiero vista (y / o modificar) el texto coloreada en emacs, como es la producción en ls -l --color=always
, tree...
o lo que sea.
El texto al que me refiero existe en un archivo. Cuando abro ese archivo en emacs, quiero poder verlo coloreado o alternarlo para mostrar secuencias de escape ANSI (SGR).
ansi-color.el
parece ser lo que necesito, pero no he podido hacer que coloree las secuencias de escape ANSi , pero veo negrita azul para los bytes de control individuales (por ejemplo, ^A
y ^[
) ... no estoy Seguro si esa es una característica de ansi-color
, pero creo que lo es.
Según los comentarios de ansi-color.el , puede funcionar con cadenas y regiones, pero incluso eso no parece funcionar. Por ejemplo, la función ansi-color-apply-on-region
no es reconocida por M-x
. Dice: "No coincide"
He agregado (require 'ansi-color)
a mi archivo .emacs e incluso (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
. No recibo ningún error o advertencia cuando se inicia emacs, así que estoy atascado.
¿Cómo puedo hacer que funcionen las funciones estándar, y puedo hacer que se apliquen automáticamente al abrir un archivo cuyo nombre tiene el sufijo .col
?
La siguiente solución permite leer (y no guardar) archivos que contienen secuencias de color ANSI. Los nombres de archivo deben tener una
.txt
extensión.Ponga la biblioteca TTY-formato en
~/.emacs.d/site-lisp/
, a continuación, añadir estas líneas a su~/.emacs
archivo de inicio.fuente
ansi-color
y va un paso más allá para, como dice su enlace, "... El objetivo de tty-format.el es simplemente hacer que * tales archivos sean visibles". ".." tales archivos "son aquellos que contienen ANSI SGR escape secuencias y retroceso .. Gracias ..tty-format
. Parece ser superior a mi función de contenedor o modo derivado de 3 líneas. :) Emacs tiene dificultades para lidiar con muchas superposiciones, que es cómo ansi-color realiza la coloración. Aquí hay una oportunidad para una mayor optimización, ya que no necesitamos colorear todo el búfer, solo la parte que se muestra.¡Muchas gracias @enzotib por tu solución!
Solo como una adición a su solución, aquí hay una manera de hacerla explícitamente invocable por el usuario:
y automático para archivos que no sean solo * .txt o README:
De esta manera, puede reemplazar sus secuencias de escape con colores sin alterar el archivo original, a diferencia de las soluciones que utiliza
ansi-color-apply-on-region
.fuente