Wie erhält man eine farbige Build-Ausgabe von Make in Sublime Text 3?

19

Wie können Sie Farbe in das ST3-Build-Ausgabefenster bringen?

Ich benutze gccfilter, um meine Build-Ausgabe einzufärben, aber ST3 zeigt nur die rohen Escape-Sequenzen an. Gibt es eine Möglichkeit, sie zu verarbeiten? Oder um gccfilter zu entfernen und ST3 zu veranlassen, die Ausgabe einzufärben (z. B. wäre es in Ordnung, nur nach Warnungen und Fehlern zu suchen)?

Yeraze
quelle

Antworten:

16

Aktuelle Versionen des Makefile-Build-Systems von ST3 (wie in der Make.sublime-Build-Datei beschrieben ) enthalten bereits eine Syntaxdefinition, die eine farbige Ausgabe erzeugt.

Wenn Sie damit nicht einverstanden sind, können Sie als alternative und allgemein funktionierende Vorgehensweise Folgendes tun, wenn Sie über ein Build-System verfügen, das ANSI-Farben in einem Terminal erzeugt, und diese im Build-Ausgabebereich von Sublime Text 3 anzeigen möchten .

So habe ich es in meiner Sublime Text 3-Installation für RSpec gemacht, aber ich denke, dass es auf jeden Fall mit einem Tool, das Farbe in einer normalen Konsole / TTY erzeugt, perfekt anwendbar ist:

1. Erzwingen Sie, dass Ihr Build-System Farben ausgibt, auch wenn diese nicht an ein TTY ausgegeben werden.

Dies hängt vom Build-System ab. Für Ruby und RSpec können Sie beispielsweise eine .rspecDatei in Ihrem Projekt mit folgendem Inhalt erstellen :

--color --tty

In Ihrem Fall haben Sie bereits ein Build-System, das Ausgaben mit ANSI-Farb-Escape-Sequenzen erzeugt.

2. Installieren Sie das ANSIescape-Paket (SublimeANSI)

Es wird empfohlen, es über die Paketverwaltung zu installieren. Installations- und Konfigurationsanweisungen finden Sie im Repository des Pakets.

3. Erstellen Sie eine neue Buildsystemdefinition in Sublime Text und konfigurieren Sie sie so, dass sie ANSI-Farben erkennt

Hier ist zum Beispiel der Inhalt meines Colorized RSpec.sublime-buildBuild-Systems:

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

Die letzten beiden Konfigurationsoptionen stammen aus der Infodatei von SublimeANSI . Sie können dies auf Ihr Build-System für Make anwenden. Sie können sich dabei auf die aktuelle Version der Make.sublime-buildDatei aus den Paketen von Sublime Text 3 stützen.

4. Erstellen Sie Ihre Datei / Ihr Projekt mit dem neu erstellten Build-System.

Verwenden Sie das Menü "Erstellen mit ...", um das neue Build-System auszuwählen. Unter OS X ist dies Cmd + Shift + B. Nachfolgende Builds mit Cmd + Bverwenden dieses zuletzt ausgewählte Build-System.

So sieht es aus:

Bildbeschreibung hier eingeben

Dimitar
quelle
1
Leider hat ANSIEscape einige Einschränkungen beim Parsen der ANSI-Escape-Codes, sodass nicht alle Ausgaben davon profitieren. Hier sind einige Einschränkungen, die ich gefunden habe: * Das Setzen des Hintergrunds nach dem Vordergrund wird nicht beeinträchtigt. * Die Verwendung von zwei Ziffern (wie in <ESC> [01m]) wird nicht korrekt analysiert. * Einige Codes, die zum Bereinigen von Zeilen verwendet werden (insbesondere: <ESC> [K), werden nicht analysiert. Dies macht diese Methode nicht vollständig geeignet für - zum Beispiel - GCC
Emilio Garavaglia
5

Derzeit gibt es keine Möglichkeit, die von mir gefundenen ST3-Konsolenfarben zu analysieren. Dies müsste mit dem Autor besprochen werden. Mir ist schon mal aufgefallen, dass die Konsole immer monochromatische Ausgabe hat. ST3 verwendet derzeit nur die Farben, die mit dem Thema bereitgestellt werden, das Sie darauf angewendet haben.

Die einzige Möglichkeit, die Escape-Sequenzen zu beseitigen, besteht darin, sie herauszufiltern, bevor die Ausgabe Sublime erreicht.

Schlau
quelle
1
Heh, ich könnte sie leicht herausfiltern, indem ich einfach nicht gccfilter benutze. Ich will einfach nur FARBE !!
Yeraze
Ja, ich wünschte es wäre möglich. Vielleicht wird es durch Drücken auf den Autor erledigt.
Sly