我正在尝试扩展现有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