Bagaimana cara mendapatkan Output Build Berwarna dari Make in Sublime Text 3?

19

Bagaimana Anda bisa mendapatkan warna ke jendela output build ST3?

Saya menggunakan gccfilter untuk mewarnai output build saya, tetapi ST3 hanya menampilkan sekuens escape mentah. Apakah ada cara untuk mendapatkannya untuk memprosesnya? Atau untuk menghapus gccfilter dan hanya mendapatkan ST3 untuk mewarnai keluaran (mis. Hanya memahami peringatan & kesalahan akan baik-baik saja)?

Yeraze
sumber

Jawaban:

16

Versi terbaru dari sistem build Makefile ST3 (seperti yang dijelaskan dalam file Make.sublime-build ) sudah mengandung definisi sintaks yang menghasilkan output berwarna.

Jika Anda tidak puas dengan hal itu, inilah yang dapat Anda lakukan sebagai alternatif dan pendekatan yang umumnya bekerja jika Anda memiliki sistem build yang menghasilkan warna ANSI di terminal dan Anda ingin ditampilkan di panel output build Sublime Text 3 .

Ini adalah bagaimana saya melakukannya di instalasi Sublime Text 3 saya untuk RSpec, tapi saya pikir itu sangat cocok dalam hal apa pun dengan alat yang menghasilkan warna dalam konsol / TTY biasa:

1. Paksa sistem build Anda untuk mengeluarkan warna bahkan jika itu tidak menghasilkan TTY.

Ini tergantung pada sistem build. Misalnya, untuk Ruby dan RSpec, Anda dapat membuat .rspecfile di proyek Anda dengan konten berikut:

--color --tty

Dalam kasus Anda, Anda sudah memiliki sistem build yang menghasilkan output dengan urutan pelarian warna ANSI.

2. Instal paket ANSIescape (SublimeANSI)

Disarankan untuk menginstalnya melalui Kontrol Paket. Lihat repo paket untuk petunjuk pemasangan dan konfigurasi.

3. Buat definisi sistem bangun baru dalam Teks Sublime dan konfigurasikan untuk mengenali warna ANSI

Sebagai contoh, berikut adalah isi dari Colorized RSpec.sublime-buildsistem build saya :

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

Dua opsi konfigurasi terakhir diambil dari readme SublimeANSI . Anda dapat menerapkan ini pada sistem build Anda untuk Make. Anda dapat mendasarkannya pada versi Make.sublime-buildfile saat ini dari paket Sublime Text 3.

4. Bangun file / proyek Anda menggunakan sistem build yang baru dibuat.

Gunakan menu "Build with ..." untuk memilih sistem build yang baru. Di OS X ini Cmd + Shift + B. Build selanjutnya dengan Cmd + Bakan menggunakan sistem build yang terakhir dipilih ini.

Begini tampilannya:

masukkan deskripsi gambar di sini

Dimitar
sumber
1
Sayangnya, ANSIEscape memiliki beberapa batasan dalam mem-parsing kode pelolosan ANSI, jadi tidak semua output akan mendapat manfaat. Berikut adalah beberapa batasan yang saya temukan: * Mengatur latar belakang setelah forground tidak interperted. * Menggunakan dua digit (seperti pada <ESC> [01m) tidak diuraikan dengan benar * Beberapa kode yang digunakan untuk membersihkan baris (terutama: <ESC> [K) tidak diuraikan. Ini membuat metode ini tidak sepenuhnya cocok untuk - misalnya - GCC
Emilio Garavaglia
5

Saat ini tidak ada cara untuk membuat warna parse konsol ST3 yang saya temukan. Ini perlu dibahas dengan penulis. Saya perhatikan sebelumnya bahwa konsol selalu memiliki output monokromatik. ST3 saat ini hanya menggunakan warna yang disediakan dengan tema yang telah Anda terapkan padanya.

Satu-satunya cara untuk menghilangkan urutan pelarian adalah dengan menyaringnya sebelum output mencapai Sublime.

Licik
sumber
1
Heh, saya bisa dengan mudah menyaringnya dengan tidak menggunakan gccfilter .. Saya hanya ingin WARNA !!
Yeraze
Ya, saya berharap itu mungkin. Mungkin mendorongnya ke penulis akan menyelesaikannya.
Sly