Jak uzyskać wynik kompilacji kolorowej z Make in Sublime Text 3?

19

Jak uzyskać kolor w oknie wyników kompilacji ST3?

Używam gccfilter do pokolorowania moich wyników kompilacji, ale ST3 wyświetla tylko nieprzetworzone sekwencje specjalne. Czy istnieje sposób, aby je przetworzyć? Lub usunąć gccfilter i po prostu zmusić ST3 do pokolorowania wydruku (np. Po prostu grep przy ostrzeżeniu i błąd byłby w porządku)?

Yeraze
źródło

Odpowiedzi:

16

Najnowsze wersje systemu kompilacji Makefile ST3 (jak opisano w pliku Make.sublime-build ) już zawierają definicję składni, która generuje pokolorowane dane wyjściowe.

Jeśli nie jesteś zadowolony z tego, oto co możesz zrobić jako alternatywne i ogólnie działające podejście, jeśli masz system kompilacji, który wytwarza kolory ANSI w terminalu i chcesz, aby były wyświetlane w panelu wyników kompilacji Sublime Text 3 .

Tak właśnie zrobiłem w mojej instalacji Sublime Text 3 dla RSpec, ale myślę, że idealnie nadaje się w każdym przypadku z narzędziem wytwarzającym kolor w zwykłej konsoli / TTY:

1. Zmuś system kompilacji do wyświetlania kolorów, nawet jeśli nie jest wysyłany do TTY.

To zależy od systemu kompilacji. Na przykład dla Ruby i RSpec możesz utworzyć .rspecplik w swoim projekcie z następującą zawartością:

--color --tty

W twoim przypadku masz już system kompilacji, który wytwarza dane wyjściowe z sekwencjami ucieczki kolorów ANSI.

2. Zainstaluj pakiet ANSIescape (SublimeANSI)

Zalecane jest zainstalowanie go za pomocą Kontroli pakietów. Zobacz repo pakietu dla instrukcji instalacji i konfiguracji.

3. Utwórz nową definicję systemu kompilacji w Sublime Text i skonfiguruj ją tak, aby rozpoznawała kolory ANSI

Na przykład oto zawartość mojego Colorized RSpec.sublime-buildsystemu kompilacji:

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

Dwie ostatnie opcje konfiguracji pochodzą z readme SublimeANSI . Możesz zastosować to do swojego systemu kompilacji dla Make. Możesz oprzeć go na bieżącej wersji Make.sublime-buildpliku z pakietów Sublime Text 3.

4. Zbuduj swój plik / projekt za pomocą nowo utworzonego systemu kompilacji.

Użyj menu „Kompiluj z ...”, aby wybrać nowy system kompilacji. W OS X tak jest Cmd + Shift + B. Kolejne kompilacje z Cmd + Bużyją tego ostatnio wybranego systemu kompilacji.

Oto jak to wygląda:

wprowadź opis zdjęcia tutaj

Dimitar
źródło
1
Niestety, ANSIEscape ma pewne ograniczenia w przetwarzaniu kodów ucieczkowych ANSI, więc nie wszystkie dane wyjściowe skorzystają. Oto niektóre ograniczenia, które znalazłem: * Ustawienie tła po tym, jak forground nie jest zakłócany. * Używanie dwóch cyfr (jak w <ESC> [01m) nie jest analizowane poprawnie * Niektóre kody używane do czyszczenia linii (zwłaszcza: <ESC> [K) nie są analizowane. To sprawia, że ​​ta metoda nie jest w pełni odpowiednia - na przykład - dla GCC
Emilio Garavaglia,
5

Obecnie nie ma sposobu, aby konsola ST3 analizowała znalezione kolory. Należy to omówić z autorem. Zauważyłem wcześniej, że konsola zawsze ma wyjście monochromatyczne. ST3 obecnie używa tylko kolorów dostarczonych z zastosowanym motywem.

Jedynym sposobem na pozbycie się sekwencji ucieczki byłoby odfiltrowanie ich, zanim wynik trafi do Sublime.

Chytry
źródło
1
Heh, mógłbym je łatwo odfiltrować, po prostu nie używając gccfilter .. Chcę tylko COLOR !!
Yeraze
Tak, chciałbym, żeby to było możliwe. Być może przekazanie go autorowi doprowadzi do końca.
Sly