Як отримати кольоровий вихід збірки з Make in Sublime Text 3?


19

Як ви можете отримати колір у вікні виводу збірки ST3?

Я використовую gccfilter, щоб розфарбувати вихід збірки, але ST3 просто відображає необроблені послідовності втечі. Чи є спосіб, щоб змусити їх обробити? Або видалити gccfilter і просто отримати ST3, щоб розфарбувати вихід (наприклад, просто греп на попередження та помилка буде добре)?

Відповіді:


16

Останні версії системи збірки Makefile ST3 (як описано у файлі Make.sublime-build ) вже містять визначення синтаксису, яке створює кольоровий вихід.

Якщо ви цим не задоволені, ось що ви можете зробити як альтернативний і загальноприйнятий підхід, якщо у вас є система складання, яка виробляє ANSI кольори в терміналі, і ви хочете, щоб вони відображалися на панелі виводу збірки Sublime Text 3 .

Ось як я це зробив у моїй установці Sublime Text 3 для RSpec, але я вважаю, що це абсолютно застосовно у будь-якому випадку для інструменту, що створює колір у звичайній консолі / TTY:

1. Примушуйте систему складання виводити кольори, навіть якщо вона не виводиться на TTY.

Це залежить від системи складання. Наприклад, для Ruby та RSpec ви можете створити .rspecфайл у своєму проекті з таким вмістом:

--color --tty

У вашому випадку у вас вже є система складання, яка виробляє вихід з послідовностями кольорового відстеження ANSI.

2. Встановіть пакет ANSIescape (SublimeANSI)

Рекомендується встановлювати його через Package Control. Інструкції щодо встановлення та налаштування див. У репост пакета.

3. Створіть нове визначення системи побудови в Sublime Text і налаштуйте його для розпізнавання кольорів ANSI

Наприклад, ось вміст моєї Colorized RSpec.sublime-buildсистеми збирання:

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

Останні два параметри конфігурації взяті з readme SublimeANSI . Ви можете застосувати це до вашої системи збирання для Make. Ви можете базувати його на поточній версії Make.sublime-buildфайлу з пакетів Sublime Text 3.

4. Створіть свій файл / проект за допомогою новоствореної системи збірки.

Використовуйте меню "Створити за допомогою ...", щоб вибрати нову систему збирання. В OS X це Cmd + Shift + B. Подальші збірки з Cmd + Bвикористовуватимуть цю останню обрану систему збірки.

Ось як це виглядає:

введіть тут опис зображення


1
На жаль, ANSIEscape має певні обмеження в аналізі кодів аварійних відбітків ANSI, тому не всі результати отримають користь. Ось деякі обмеження, які я знайшов: * Налаштування фону після того, як форвард не змінюється. * Використання двох цифр (наприклад, у <ESC> [01m) не розбирається ядро ​​* Деякі коди, які використовуються для очищення рядка (зокрема: <ESC> [K), не аналізуються. Це робить цей метод не зовсім підходящим для, наприклад, GCC
Emilio Garavaglia

5

В даний час немає можливості зробити розбір кольорів консолі ST3, які я знайшов. Це потрібно було б обговорити з автором. Я раніше помічав, що консоль завжди має однотонний вихід. Наразі ST3 використовує лише ті кольори, які надані з темою, яку ви застосували до нього.

Єдиним способом позбутися послідовностей евакуації було б відфільтрувати їх до того, як вихід потрапить на Sublime.


1
Гей, я міг би легко їх відфільтрувати, просто не використовуючи gccfilter .. Я просто хочу КОЛІР !!
Єразе

Так, хотілося б, щоб це було можливо. Можливо, підштовхнувши це до автора, це вийде.
Хитрий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.