我正在嘗試擴展現有Resharper插件,其中包含一些自定義語言的語法突出顯示,並且當前語言關鍵字突出顯示是使用CSharpDaemonStageBase
創建的自定義CSharpIncrementalDaemonStageProcessBase
實現的。Resharper插件突出顯示在某些類型上失敗
高亮是通過覆蓋VisitNode
像這樣實現的:
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的選項得到強調。不幸的是,這些ID中的一些似乎不起作用,導致無論如何都沒有突出顯示。
這是幾個的那些我可以證實與MEF/ReSharper的插件是否正確註冊的(正確這些工作):
- 「HTML元素名稱」
- 「HTML屬性名稱」
- 「HTML屬性值」
- 「關鍵字」
- 「評論」
- 「字符串」
- 「操作員」
- 「數」
這些價值似乎都產生有效的突出成績,但我想強調一些類/接口參考節點,和我沒有什麼我能找到的東西結果被突出顯示。有些我已經試過,想利用變化:
- 「用戶類型」
- 「用戶類型(接口)」
- 「用戶類型 - 類」
- 「用戶類型 - 接口」
- ‘類名’(讀的地方,這是對VS2015的新名稱,仍然沒有骰子)
- ‘接口名稱’
據我可以告訴我應該能夠返回映射到Visual Studio中的有效顏色的任何字符串值,但出於某種原因沒有這些工作。我認識的人認爲這可能是VS/MEF中的問題。
感謝您的澄清。恥辱我無法自動匹配用戶選擇的顏色。 – caesay
您可以通過使用ReSharper亮點 - 「ReSharper類標識符」等 – citizenmatt
那些不匹配 - 默認情況下,我的安裝中的「ReSharper類標識符」與C++高亮方案匹配,但不匹配C#。 – caesay