【问题标题】:Resharper plugin highlighting fails on certain typesResharper 插件突出显示在某些类型上失败
【发布时间】:2016-07-19 00:00:33
【问题描述】:

我目前正在尝试扩展现有的 Resharper 插件,该插件包含一些自定义语言的语法突出显示,当前语言关键字突出显示是通过创建自定义 CSharpIncrementalDaemonStageProcessBaseCSharpDaemonStageBase 实现的。

高亮是通过像这样覆盖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


    【解决方案1】:

    高亮 ID 实际上是 ReSharper 高亮 ID,而不是 Visual Studio 文本分类 ID - 它们不可互换。换句话说,ReSharper 使用的所有属性 ID 首先使用 RegisterHighlighterAttribute 的实例向 ReSharper 注册。在安装过程中,这些荧光笔(具有前景色和背景色等)会在 Visual Studio 中注册为文本分类,这就是它们在“字体和颜色”对话框中的显示方式。

    与一些亮点有重叠,即“关键字”、“字符串”、“数字”、“评论”、“文本”等 - 这些 ReSharper ID 直接映射到众所周知的 Visual Studio 分类。但是,在 ReSharper API 中使用时,您使用的是 ReSharper ID。

    例如,相同的代码用于 Project Rider,它是基于 IntelliJ 的 C# IDE,在后端使用 ReSharper。但在这里,ReSharper 高亮 ID 映射到 IntelliJ 属性,以便在 IntelliJ 编辑器中着色。同样,在 dotPeek 中显示代码时,ReSharper 高亮 ID 会映射到属性中定义的颜色。

    您可以将现有的 ReSharper 突出显示用于各种标识符类型,例如“ReSharper 类标识符”或“ReSharper 接口标识符”。

    【讨论】:

    • 感谢您的澄清。可惜我不能自动匹配用户选择的颜色。
    • 您可以通过使用 ReSharper 亮点 - “ReSharper 类标识符”等
    • 那些不匹配 - 默认情况下,我的安装中的“ReSharper 类标识符”匹配 C++ 突出显示方案,但根本不匹配 C#。
    • 啊,好点子。这些标识符实际上仅在选项中启用 ReSharper 的“颜色标识符”选项时才使用 →代码检查→设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多