web-dev-qa-db-ja.com

VSCodeに簡単なカスタム言語の色付けを作成する方法

コードにカスタム言語を含めることができるようになったので、ログファイルの単純な色付けを作成しようとしています(私は0.9.2を使用しています)。起動するためだけに、文字「q」を色付けするための単純な.tmLanguageファイルを作成しましたが、失敗しました。

私の新しい言語logはファイル拡張子に正しく関連付けられており、コード内から手動で選択することもできますが、色付けは行われません。パターンをどの「スコープ」に関連付けるかと関係があると感じていますが、よくわかりません。選択できる有効なスコープのリストはありますか?当初は「コメント」などの一般的なものを使って色を付けようと思っていましたが、うまくいかないようです。

これが私の.tmLanguageファイルです:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>scopeName</key>
        <string>text.log</string>

        <key>fileTypes</key>
        <array>
            <string>log</string>
        </array>

        <key>name</key>
        <string>Log file</string>

        <key>patterns</key>
        <array>
            <dict>
                <key>match</key>
                <string>q</string>
                <key>name</key>
                <string>comment</string>
            </dict>
        </array>
    </dict>
</plist>

私はおそらくここで何かを誤解しているので、どんな助けでも大歓迎です:-)

10
emilast

パターンを説明するには、静的文字列の代わりに正規表現を使用する必要があります。

<key>match</key>
<string>q</string>  <- This needs to be a regular expression
<key>name</key>
<string>comment</string>

ログファイルハイライターのより便利な例を示します。数字、ヒント、警告、エラーをさまざまな色で色分けします。これらのキーワードと番号を識別するためのルールは、正規表現に基づいています。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>scopeName</key>
        <string>text.log</string>

        <key>fileTypes</key>
        <array>
            <string>log</string>
        </array>

        <key>name</key>
        <string>Log file</string>

        <key>patterns</key>
        <array>
            <dict>
                <key>match</key>
                <string>\b(?i:(hint|info|information))\b</string>
                <key>name</key>

                <string>info-token</string>
            </dict>                
            <dict>
                <key>match</key>
                <string>\b(?i:(warning|warn))\b</string>
                <key>name</key>
                <string>warn-token</string>
            </dict>
            <dict>
                <key>match</key>
                <string>\b(?i:(Error|Failure|Fail))\b</string>
                <key>name</key>
                <string>error-token</string>
            </dict>
            <dict>
                <key>match</key>
                <string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b</string>
                <key>name</key>
                <string>constant.numeric</string>
            </dict>                                
        </array>
        <key>uuid</key>
        <string>FF0550E0-3A29-11E3-AA6E-0800200C9A77</string>
    </dict>
</plist>

蛍光ペンは次のような結果をもたらします(デフォルトのテーマを使用):

enter image description here

使用可能なトークン(error-tokenconstant.numericなど)に関する公式ドキュメントが見つかりませんでした。しかし、%VSCODE_INSTALLATION%\resources\app\out\vs\languages\markdown\common\tokens.cssにファイルがあります。利用可能なすべてのトークンなどがリストされているようです。.tmLanguageファイルを作成する際の参照として使用してください。

ただし、注意してください。一部のテーマでは、basicトークンのみが使用されています。そして、他のいくつかのテーマは、多くの異なるトークンに同じ色を使用しています。したがって、最も一般的なテーマに対して蛍光ペンを頻繁にテストして、結果が良好に見えるかどうかを確認する必要があります。

詳細については、 Language Grammars についてこのページに必ずアクセスしてください。

8
Wosi

出力パネルに色付けをもたらす言語拡張機能をリリースしました。基本的に、このスレッドで承認された回答と同じことを行い、出力パネルで使用されるtext/x-code-outputmimeタイプを追加します。

ここで無料で入手してください: https://marketplace.visualstudio.com/items?itemName=IBM.output-colorizer

ソースはこちら: https://github.com/IBM-Bluemix/vscode-log-output-colorizer 貢献してください!バグ、機能のリクエスト、投稿はすべて歓迎します。

これが機能しているスクリーンショットです。

enter image description hereenter image description hereenter image description here

7
Andrew Trice

@Woshiが言ったように、正規表現が必要です。

ほとんどのカラーテーマで一般的に機能するスコープについては、 この回答 にリンクします。スコープを取得するには、キー「name」の辞書に含まれている必要があることに注意してください。

1
Taugeshtu