【发布时间】:2016-07-19 00:00:33
【问题描述】:
我目前正在尝试扩展现有的 Resharper 插件,该插件包含一些自定义语言的语法突出显示,当前语言关键字突出显示是通过创建自定义 CSharpIncrementalDaemonStageProcessBase 的 CSharpDaemonStageBase 实现的。
高亮是通过像这样覆盖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 中的问题。
【问题讨论】:
标签: c# vb.net visual-studio plugins resharper