Sublime Text 3のMakeからカラービルド出力を取得する方法は?


19

ST3ビルド出力ウィンドウに色を入れるにはどうすればよいですか?

私はgccfilterを使用してビルド出力を色付けしていますが、ST3は生のエスケープシーケンスを表示するだけです。それらを処理する方法はありますか?または、gccfilterを削除して、出力を色付けするためにST3を取得するだけです(たとえば、警告およびエラー時にgrepだけで問題ありません)。

回答:


16

ST3のMakefileビルドシステムの最新バージョン(Make.sublime-buildファイルで説明)には、色付き出力を生成する構文定義が既に含まれています。

それに満足していない場合、ターミナルでANSIカラーを生成するビルドシステムがあり、Sublime Text 3のビルド出力パネルにそれらを表示したい場合、代替として一般的に動作するアプローチとしてできることは次のとおりです。

これはRSpecのSublime Text 3のインストールで行った方法ですが、通常のコンソール/ TTYで色を生成するツールを使用する場合に完全に適用できると思います。

1.ビルドシステムがTTYに出力していない場合でも、強制的に色を出力します。

これはビルドシステムに依存します。たとえば、RubyとRSpecの場合.rspec、プロジェクトに次の内容のファイルを作成できます。

--color --tty

あなたの場合、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"
}

最後の2つの構成オプションは、SublimeANSIのreadmeから取得されます。これをMakeのビルドシステムに適用できます。Make.sublime-buildSublime Text 3のパッケージのファイルの現在のバージョンに基づいて作成できます。

4.新しく作成したビルドシステムを使用してファイル/プロジェクトをビルドします。

[ビルド...]メニューを使用して、新しいビルドシステムを選択します。OS Xでは、これはCmd + Shift + Bです。以降のビルドでCmd + Bは、この最後に選択されたビルドシステムが使用されます。

外観は次のとおりです。

ここに画像の説明を入力してください


1
残念なことに、ANSIEscapeにはANSIエスケープコードの解析に制限があるため、すべての出力が恩恵を受けるわけではありません。ここに私が見つけたいくつかの制限があります:*フォアグラウンドがインタープリトされない後にバックグラウンドを設定する。*(<ESC> [01mのように)2桁を使用することは、正しく解析されません。このため、この方法は、たとえば
-GCC

5

現在、私が見つけたST3コンソールで色を解析する方法はありません。これは著者と議論する必要があります。コンソールには常に単色出力があることに気づきました。ST3は現在、適用したテーマで提供されている色のみを使用します。

エスケープシーケンスを取り除く唯一の方法は、出力がSublimeに達する前にエスケープシーケンスを除外することです。


1
ちょっと、gccfilterを使わないで簡単にフィルターできます。ただ色が欲しい!
イェラゼ14年

ええ、私はそれが可能であったことを望みます。おそらくそれを作者にプッシュすることでそれが実現するでしょう。
スライ14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.