2017-04-11 106 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

相關問題