vscodeでシンタックスハイライトの設定を行う場合,settings.json
のeditor.tokenColorCustomizations
で"keywords"
や"varialbles"
を一括で指定する方法と"textMateRules"
でスコープを指定する方法があります.その二つでも十分なシンタックスハイライトが利用できるのですが,言語サーバーによる字句解析に基づいたセマンティックハイライトも利用できます.今回はrust-analyzerを用いたセマンティックハイライト特有の利用法をいくつか紹介します.詳しくはrust-analyzerのユーザーマニュアルやvscodeのガイドを参照してください.
まずセマンティックハイライトを利用するためにsettings.json
の"editor.semanticHighlighting.enabled"
をtrue
にします.
ミュータビリティや消費の可視化
以下のように"editor.semanticTokenColorCustomizations"
を指定していきます.variable
トークンにmutable
で修飾することでミュータブルな変数のスタイルを指定し,consuming
で修飾することで消費されるときのスタイルを指定できます.
これによって以下のように消費される部分では斜体になり,ミュータブルな変数は下線がつきます.variable.mutable
はデフォルトで下線が付くため本来はfontStyle
を指定しなくても大丈夫です.
pubの可視化
public
修飾子を使うことでpub
と定義されたときのスタイルを指定できます.
これによって公開する関数とそうでない関数の色分けができます.
型と型パラメーターや型エイリアスとの色分け
デフォルトでは同じ色となる構造体と型パラメーター,型エイリアスの色分けを行えます.以下ではそれに加えて列挙体とトレイトも指定しています.トレイトはinterface
トークンで指定します.
外部クレートとの色分け
外部クレートや標準ライブラリからインポートする場合の修飾子を指定できます.
これによって外部クレート,標準ライブラリ,内部モジュールで構造体の色分けができます.