2017-04-11 74 views
7

我有一个显示红色错误波形的Visual Studio扩展。我还喜欢提供其他颜色的花纹,例如黄色表示警告。如何使用Visual Studio扩展创建绿色(或蓝色)扭曲装饰

创建红色波浪线可以通过扩展ITagger类完成,沿线:

internal sealed class MySquigglesTagger : ITagger<IErrorTag> { 
    public IEnumerable<ITagSpan<IErrorTag>> GetTags(NormalizedSnapshotSpanCollection spans) { 
     foreach (IMappingTagSpan<MyTokenTag> myTokenTag in this._aggregator.GetTags(spans))   
      SnapshotSpan tagSpan = myTokenTag.Span.GetSpans(this._sourceBuffer)[0]; 
      yield return new TagSpan<IErrorTag>(tagSpan, new ErrorTag("Error", "some info about the error")); 
     } 
    } 
} 

我曾尝试:

  1. 我的直觉(错误地)说,返回一个ErrorTag与不同的errorType可能会产生不同类型的标签,但是无论您将其传递给哪个字符串,这些波形都会保持红色。例如。新的ErrorTag(“警告”)会给出红色的波形。 MSDN文档几乎不存在。见ErrorTag
  2. Tagging namespace中,没有提到实现ITag的不同Tag元素。我希望存在WarningTag或InfoTag。
  3. 在MSDN论坛here上提问。

问题:如何创建绿色(或蓝色或黄色)波浪装饰?可悲的是,即使奥术或复杂的解决方案,赞赏...

我的目标是VS2015和VS2017。

编辑:在输入此问题时,MSDN论坛上的某人回复说,无法使用当前API完成此操作。在Visual Studio中制作黄色曲线真的不可能吗?!

+0

“标记”命名空间还有'TextMarkerTag',其中包括'ITag'。你读过https://msdn.microsoft.com/en-us/library/dd885121.aspx吗? –

+0

@ C.Evenhuis是的,我已阅读并实现了大括号匹配和关键字高亮显示,但我看不到如何使用TextMarkerTag来显示波形。我想我需要实现IErrorTag。 – HJLebbink

+0

然后,您可能想要为'ErrorType'尝试其中的一个值,这些值似乎是VS支持的值:https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.text.adornments.predefinederrortypenames .aspx –

回答

3

PredefinedErrorTypeNames包含ErrorTagErrorType属性支持的值。

您已接近“警告”,但PredefinedErrorTypeNames.Warning的值似乎是“编译器警告”。

+2

如果仅仅通过在需要它的地方添加一个链接来记录(通过MS),我不会浪费几天的时间。我会请求MS的某人修复它。 – HJLebbink

相关问题