VSCode拡張機能のSyntaxの制約
使えるのは以下だけ
foreground …… 文字色
fontstyle …… bold, italic, underline, strikethroughの組み合わせ
backgroundは使えないsta.icon
2016年から盛り上がってるけど未だ対応されてない
whitespaceに色をつけることはできない
が、settings の editor.renderWhitespace を none とかにすればいける
この場合、色がつくのは underline と strikethrough のみ
あとはスコープ名にハマりどころがあるので注意。
VSCodeは「テーマ」が「(色を指定する単位である)スコープ」を定義している
コメントは comment.line とか comment.block を使えとか
定数は constant.numeric とか constant.character とか使えとか
---
テーマ1はcomment.blockに~~色を設定している、みたいな形になってるsta.icon*2
ゆえに、Syntax hilightつくる人も「comment.block」とかいったスコープ名を使わなきゃいけない
これ回避して好きにしたければ「独自スコープ名による定義」を自分のsettings.jsonに書かせる、が必要
Q: .xxx という拡張子で独自文法をサポートしたい
→ Language Support をつくりましょう。
ただしスコープ名は慣習に従いましょう。そうしないと既存のテーマで色付けされません。
---
Q: Language Support で独自のスコープ名を使いたい
→ 方法は二つあります。
一つ目は、独自スコープ名に対する色を定義したテーマ(Color Theme)を自作することです。
ただし、そのようなテーマを有効にすると、(あなたのテーマには慣習のスコープ名に対する定義がないので)大部分の既存のシンタックスハイライトがカラーリングされなくなります。たとえば json も Markdown も、Javascript も TypeScript も、ハイライトがすべて消えるでしょう。なぜなら、これらの言語定義は慣習のスコープ名に則っているからです。これを防ぎたいなら、あなたのテーマに「慣習のスコープ名に対する色の定義」をつくらねばなりません。
二つ目は、独自スコープ名に対する色の定義を 利用者の settings.json に書かせる 方法です。冒頭で紹介した Tritask は、この方法を用いています。