LoginSignup
4
3

More than 1 year has passed since last update.

【Rust】rust-analyzerでセマンティックハイライト

Posted at

vscodeでシンタックスハイライトの設定を行う場合,settings.jsoneditor.tokenColorCustomizations"keywords""varialbles"を一括で指定する方法と"textMateRules"でスコープを指定する方法があります.その二つでも十分なシンタックスハイライトが利用できるのですが,言語サーバーによる字句解析に基づいたセマンティックハイライトも利用できます.今回はrust-analyzerを用いたセマンティックハイライト特有の利用法をいくつか紹介します.詳しくはrust-analyzerのユーザーマニュアルやvscodeのガイドを参照してください.
まずセマンティックハイライトを利用するためにsettings.json"editor.semanticHighlighting.enabled"trueにします.

ミュータビリティや消費の可視化

以下のように"editor.semanticTokenColorCustomizations"を指定していきます.variableトークンにmutableで修飾することでミュータブルな変数のスタイルを指定し,consumingで修飾することで消費されるときのスタイルを指定できます.
mutabiliy_consuming_setting.PNG
これによって以下のように消費される部分では斜体になり,ミュータブルな変数は下線がつきます.variable.mutableはデフォルトで下線が付くため本来はfontStyleを指定しなくても大丈夫です.
mutablity_consuming.PNG

pubの可視化

public修飾子を使うことでpubと定義されたときのスタイルを指定できます.
whether_pub_function_setting.PNG
これによって公開する関数とそうでない関数の色分けができます.
whether_pub_function.PNG

型と型パラメーターや型エイリアスとの色分け

デフォルトでは同じ色となる構造体と型パラメーター,型エイリアスの色分けを行えます.以下ではそれに加えて列挙体とトレイトも指定しています.トレイトはinterfaceトークンで指定します.
types_setting.PNG
types.PNG

外部クレートとの色分け

外部クレートや標準ライブラリからインポートする場合の修飾子を指定できます.module_structs_settings.PNG
これによって外部クレート,標準ライブラリ,内部モジュールで構造体の色分けができます.
module_structs.PNG

deriveマクロとトレイトの色分け

こんがらがってしまいがちなderiveマクロとトレイトの色分けももちろんできます.
derive_and_trait_settings.PNG
derive_and_trait.PNG

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3