Как получить вывод Цветной сборки из Make в Sublime Text 3?


19

Как вы можете получить цвет в окне вывода сборки ST3?

Я использую gccfilter, чтобы раскрасить результаты сборки, но ST3 просто отображает необработанные escape-последовательности. Есть ли способ заставить его обрабатывать их? Или удалить gccfilter и просто заставить ST3 раскрасить вывод (например, просто grep при предупреждении и ошибке будет в порядке)?

Ответы:


16

Последние версии системы сборки Makefile в ST3 (как описано в файле Make.sublime-build ) уже содержат определение синтаксиса, которое создает цветной вывод.

Если вас это не устраивает, вот что вы можете сделать как альтернативный и в целом рабочий подход, если у вас есть система сборки, которая выдает цвета ANSI в терминале, и вы хотите, чтобы они отображались на панели вывода сборки Sublime Text 3 ,

Вот как я это сделал в своей установке Sublime Text 3 для RSpec, но я думаю, что она в любом случае идеально подходит для инструмента, создающего цвет в обычной консоли / TTY:

1. Заставьте вашу систему сборки выводить цвета, даже если она не выводится на TTY.

Это зависит от системы сборки. Например, для Ruby и RSpec вы можете создать .rspecфайл в своем проекте со следующим содержимым:

--color --tty

В вашем случае у вас уже есть система сборки, которая выдает выходные данные с цветными escape-последовательностями ANSI.

2. Установите пакет ANSIescape (SublimeANSI)

Рекомендуется установить его через управление пакетами. См. Репозиторий для инструкций по установке и настройке.

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. Создайте свой файл / проект, используя только что созданную систему сборки.

Используйте меню «Build with ...», чтобы выбрать новую систему сборки. На OS X это есть Cmd + Shift + B. Последующие сборки с Cmd + Bиспользованием этой последней выбранной системы сборки.

Вот как это выглядит:

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


1
К несчастью, ANSIEscape имеет некоторые ограничения при разборе escape-кодов ANSI, поэтому выигрывают не все выходные данные. Вот некоторые ограничения, которые я обнаружил: * Задание фона после того, как форфорд не вмешивается. * Использование двух цифр (как в <ESC> [01m) не анализируется по существу * Некоторые коды, используемые для очистки строки (особенно: <ESC> [K), не анализируются. Это делает этот метод не полностью подходящим для - например - GCC
Эмилио Гаравалья

5

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

Единственный способ избавиться от escape-последовательностей - отфильтровать их до того, как результат попадет в Sublime.


1
Хех, я мог бы легко отфильтровать их, просто не используя gccfilter .. Я просто хочу ЦВЕТ !!
Yeraze

Да, я бы хотел, чтобы это было возможно. Возможно, подтолкнув его к автору, это будет сделано.
Хитрый
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.