如何根据行号数组添加Margin Glyph

时间:2017-05-02 03:32:35

标签: roslyn vs-extensibility roslyn-code-analysis

在我的VS 2015扩展中,我需要将保证金字形添加到从Web服务返回的行数(Web服务仅返回行号)。 MSDN包含以下示例,它跟踪编辑器中的文本并相应地添加边距字形,但是此示例表示更复杂的场景并且与我的要求不符,请告知如何实现此目的。

https://msdn.microsoft.com/en-us/library/ee361745%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396

1 个答案:

答案 0 :(得分:0)

首先,请参阅演练中的实现大括号匹配标记提供程序部分:显示匹配大括号示例以使用ITaggerProvider更改为IViewTaggerProvider。从Web服务收到列表后,您可以致电

TagsChanged?.Invoke(this, new SnapshotSpanEventArgs(new SnapshotSpan(
    SourceBuffer.CurrentSnapshot, 0, SourceBuffer.CurrentSnapshot.Length)));

在您的函数中显式调用GetTags来检查当前快照中的标记。下面是一个如何在GetTags中绘制字形的示例:

foreach (SnapshotSpan span in spans)
        {
                ITextSnapshotLine startLine = span.Start.GetContainingLine(); 
                int startLineNumber = startLine.LineNumber;

         // Draw glyph if startLineNumber is contained in your list ...