Come ottenere output di generazione colorati da Make in Sublime Text 3?


19

Come puoi ottenere il colore nella finestra di output della build ST3?

Sto usando gccfilter per colorare il mio output di build, ma ST3 mostra solo le sequenze di escape non elaborate. C'è un modo per farlo per elaborarli? O per rimuovere gccfilter e ottenere ST3 per colorare l'output (ad esempio, basta grep in caso di avviso e errore andrebbe bene)?

Risposte:


16

Le versioni recenti del sistema di build Makefile di ST3 (come descritto nel file Make.sublime-build ) contengono già una definizione di sintassi che produce output colorato.

Se non sei soddisfatto, ecco cosa puoi fare come approccio alternativo e generalmente funzionante se hai un sistema di generazione che produce colori ANSI in un terminale e vuoi che vengano mostrati nel pannello di output della compilazione di Sublime Text 3 .

È così che ho fatto nella mia installazione di Sublime Text 3 per RSpec, ma penso che sia perfettamente applicabile in ogni caso con uno strumento che produce colore in una normale console / TTY:

1. Forza il tuo sistema di generazione a produrre colori anche se non viene inviato a un TTY.

Questo dipende dal sistema di compilazione. Ad esempio, per Ruby e RSpec, è possibile creare un .rspecfile nel progetto con i seguenti contenuti:

--color --tty

Nel tuo caso, hai già un sistema di generazione che produce output con sequenze di escape colore ANSI.

2. Installare il pacchetto ANSIescape (SublimeANSI)

Si consiglia di installarlo tramite Controllo pacchetti. Vedere il repository del pacchetto per le istruzioni di installazione e configurazione.

3. Creare una nuova definizione del sistema di compilazione in Sublime Text e configurarla per riconoscere i colori ANSI

Ad esempio, ecco i contenuti del mio Colorized RSpec.sublime-buildsistema di compilazione:

{
    "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"
}

Le ultime due opzioni di configurazione sono tratte dal readme di SublimeANSI . Puoi applicarlo al tuo sistema di compilazione per Make. Puoi basarlo sulla versione corrente del Make.sublime-buildfile dai pacchetti di Sublime Text 3.

4. Crea il tuo file / progetto usando il sistema di creazione appena creato.

Utilizzare il menu "Crea con ..." per selezionare il nuovo sistema di generazione. Su OS X questo è Cmd + Shift + B. Le build successive con Cmd + Butilizzeranno quest'ultimo sistema di build selezionato.

Ecco come appare:

inserisci qui la descrizione dell'immagine


1
Sfortunatamente, ANSIEscape presenta alcune limitazioni nell'analisi dei codici di escape ANSI, quindi non tutti i risultati ne trarranno vantaggio. Ecco alcune limitazioni che ho riscontrato: * L'impostazione dello sfondo dopo l'interruzione del forground. * L'uso di due cifre (come in <ESC> [01m) non viene analizzato correttamente * Alcuni codici utilizzati per pulire la linea (in particolare: <ESC> [K) non vengono analizzati. Questo rende questo metodo non del tutto adatto per - ad esempio - GCC
Emilio Garavaglia il

5

Al momento non c'è modo di rendere i colori di analisi della console ST3 che ho trovato. Questo dovrebbe essere discusso con l'autore. Ho notato prima che la console ha sempre un output monocromatico. ST3 attualmente utilizza solo i colori forniti con il tema che è stato applicato ad esso.

L'unico modo per sbarazzarsi delle sequenze di escape sarebbe filtrarle prima che l'output raggiunga Sublime.


1
Ehi, potrei facilmente filtrarli semplicemente non usando gccfilter .. Voglio solo COLOR !!
Yeraze,

Sì, vorrei che fosse possibile. Forse spingendolo all'autore lo farà.
Sly
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.