VSCode C#の#if falseで囲んだ行の色を変更する方法
C#は、プリプロセッサディレクティブ ( #if false
など) で条件付きコンパイルを実現できる。
VSCodeでC#を書くと、プリプロセッサディレクティブを用いてコンパイルが通らないようにした行も他の行と同じテキスト色で表示してしまう。これでは、実際にはコンパイルされず処理が通らない行であっても、そうでないかのように勘違いされてしまう。
コンパイルが通らない行は、「コメントアウトした行」のように、文字色が薄い灰色になっていることが好ましい。今回はVSCodeの設定を書き換えることで、この問題を解決した。
必要な設定
setting.json
に以下を記述するだけでOK。
"editor.semanticTokenColorCustomizations": {
"rules": {
"excludedCode": "#88846f"
}
},
補足: Inspect Editor Tokens and Scopes機能について
VSCodeには、エディタ内の文字にカーソルを当てると、色定義キーや、今使っているカラーコードなどの情報を取得できる「開発者: エディター トークンとスコープの検査 / Developer: Inspect Editor Tokens and Scopes」という機能がある。
今回文字色を変えた「#if false
」で囲まれた部分は、「excludedCode」というキーが割り当てられていた。これをもとに setting.json
を書き換えている。
もっと細かく色を設定できるようだが、詳細はここでは省く。詳しく知りたい場合はVSCodeの公式ドキュメント等を参照のこと。
参考資料
VS Code tips — The "Developer: Inspect editor tokens and scopes" command - YouTube
C# プリプロセッサ ディレクティブ | Microsoft Docs
Syntax Highlight Guide | Visual Studio Code Extension API
Semantic Highlight Guide | Visual Studio Code Extension API
Change colour of inactive preprocessor blocks in C# · Issue #69513 · microsoft/vscode
(VSCodeのC#プラグインの標準機能として対応する気はなさそう。これくらいは直してほしいなあ……)
Discussion