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)?

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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.