¿Cómo obtener salida de compilación coloreada de Make en Sublime Text 3?


19

¿Cómo puede obtener color en la ventana de salida de compilación ST3?

Estoy usando gccfilter para colorear mi salida de compilación, pero ST3 solo muestra las secuencias de escape sin procesar. ¿Hay alguna manera de conseguir que los procese? ¿O para eliminar gccfilter y simplemente hacer que ST3 coloree la salida (por ejemplo, solo grep en advertencia y error estaría bien)?

Respuestas:


16

Las versiones recientes del sistema de compilación Makefile de ST3 (como se describe en el archivo Make.sublime-build ) ya contienen una definición de sintaxis que produce resultados coloreados.

Si no está satisfecho con eso, esto es lo que puede hacer como un enfoque alternativo y generalmente funcional si tiene un sistema de compilación que produce colores ANSI en un terminal y desea que se muestren en el panel de salida de compilación de Sublime Text 3 .

Así es como lo hice en mi instalación de Sublime Text 3 para RSpec, pero creo que es perfectamente aplicable en cualquier caso con una herramienta que produce color en una consola / TTY normal:

1. Fuerce su sistema de compilación para generar colores, incluso si no se está emitiendo a un TTY.

Esto depende del sistema de compilación. Por ejemplo, para Ruby y RSpec, puede crear un .rspecarchivo en su proyecto con los siguientes contenidos:

--color --tty

En su caso, ya tiene un sistema de compilación que produce resultados con secuencias de escape de color ANSI.

2. Instale el paquete ANSIescape (SublimeANSI)

Se recomienda instalarlo a través de Package Control. Consulte el repositorio del paquete para obtener instrucciones de instalación y configuración.

3. Cree una nueva definición de sistema de compilación en Sublime Text y configúrela para reconocer los colores ANSI

Por ejemplo, aquí está el contenido de mi Colorized RSpec.sublime-buildsistema de compilación:

{
    "cmd": ["rspec", "-I ${file_path}", "$file"],
    "file_regex": "# ([A-Za-z:0-9_./ ]+rb):([0-9]+)",
    "working_dir": "${project_path:${folder:${file_path}}}",
    "selector": "source.ruby.rspec",
    // Recognize ANSI colors in the output
    "target": "ansi_color_build",
    "syntax": "Packages/ANSIescape/ANSI.tmLanguage"
}

Las dos últimas opciones de configuración se toman del archivo Léame de SublimeANSI . Puede aplicar esto a su sistema de compilación para Make. Puede basarlo en la versión actual del Make.sublime-buildarchivo de los paquetes de Sublime Text 3.

4. Cree su archivo / proyecto utilizando el sistema de creación recién creado.

Use el menú "Construir con ..." para elegir el nuevo sistema de compilación. En OS X esto es Cmd + Shift + B. Las construcciones posteriores Cmd + Butilizarán este último sistema de compilación seleccionado.

Así es como se ve:

ingrese la descripción de la imagen aquí


1
Desafortunadamente, ANSIEscape tiene alguna limitación al analizar los códigos de escape ANSI, por lo que no todos los resultados se beneficiarán. Aquí hay algunas limitaciones que he encontrado: * Establecer el fondo después de que el primer plano no esté interpelado. * El uso de dos dígitos (como en <ESC> [01m) no se analiza correctamente * Algunos códigos utilizados para limpiar la línea (en particular: <ESC> [K) no se analizan. Esto hace que este método no sea totalmente adecuado para, por ejemplo, GCC
Emilio Garavaglia

5

Actualmente no hay forma de hacer que la consola ST3 analice los colores que he encontrado. Esto debería ser discutido con el autor. He notado antes que la consola siempre tiene salida monocromática. Actualmente, ST3 solo utiliza los colores que se proporcionan con el tema que le ha aplicado.

La única forma de deshacerse de las secuencias de escape sería filtrarlas antes de que la salida llegue a Sublime.


1
Heh, podría filtrarlos fácilmente simplemente no usando gccfilter. ¡Solo quiero COLOR!
Yeraze

Sí, desearía que fuera posible. Quizás empujarlo hacia el autor lo hará.
Sly
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.