現在、カスタム言語の構文強調表示を含む既存のResharperプラグインを拡張しようとしていますが、CSharpIncrementalDaemonStageProcessBase
というカスタムを作成するCSharpDaemonStageBase
で現在の言語キーワードの強調表示が実装されています。Resharperプラグインのハイライト表示が特定の種類で失敗する
public override void VisitNode(ITreeNode node, IHighlightingConsumer context) {
base.VisitNode(node, context);
DocumentRange highlightingRange = node.GetHighlightingRange();
string highlightId = ...
if (highlightId != null)
context.AddHighlighting(new ICustomAttributeIdHighlighting_Impl(highlightId, highlightingRange));
}
highlightId
は(理論的に)Visual Studioで任意の事前定義された色であることができ、ノードは、Visual Studioのオプションに応じて強調表示された取得する必要があり:
強調表示はそうのようなVisitNode
をオーバーライドすることによって達成されます。残念ながら、これらのIdのいくつかはうまく機能していないようで、何も強調表示されません。
- 「HTML要素名」
- 「HTML属性名」 :
- "HTML属性値" "キーワード"
- は、 "コメント"
- "文字列"
- 「演算子」
- 「数」
これら
は、(適切にこれらの作品)私が正しくMEF/ReSharperのプラグインに登録されている確認できるもののほんの一部ですこれらの値は、すべてのように見えるの有効なハイライトの結果を生成し、しかし、私はいくつかのクラス/インタフェース参照ノードを強調表示したい、と私は何も私は物事に結果を見つけることができません強調表示されます。私が試したし、使用したいバリエーションのいくつか:
- 「ユーザータイプ」
- 「ユーザータイプ(インターフェース)」
- 「ユーザータイプ - クラス」
- 「ユーザータイプ - インタフェース」
- 『クラス名』(これはVS2015、まだサイコロのための新しい名前だったことをどこかで読ん)
- 『インタフェース名』
私の知る限りでは、ビジュアルスタジオの有効な色にマッピングされた文字列値を返すことができるはずですが、なんらかの理由でこれらの作業はありません。私が知っている誰かが、それがVS/MEFの問題かもしれないと示唆しました。
ご清聴ありがとうございます。恥知らず私はユーザーの選択した色に自動的に一致することはできません。 – caesay
ReSharperハイライト - 「ReSharper Class Identifier」などを使用することができます。 – citizenmatt
これらは一致しません - 私のインストールではデフォルトで「ReSharper Class Identifier」がC++ハイライトスキームと一致しますが、C#ではまったく一致しません。 – caesay