如何在IClassifier.GetClassificationSpans上获取行号?

时间:2019-06-18 14:15:53

标签: c# visual-studio-extensions

我正在用C#开发Visual Studio扩展,并且我想基于对该文件的分析,在文件上添加分类。我得到了每个缺陷的一组位置(文件,行,列)的分析结果。

基于MS doc,我已经看到我们应该实现IClassifier.GetClassificationSpans方法。我可以看到我们得到了一组SnapshotSpan。这些跨度似乎是打开文件中的完整行:当前显示的可见行和当前正在编辑的行。

但是,正如之前所说,我的位置已经存在一系列缺陷。我想获取当前的跨度行号,以便可以检查该行是否注册了缺陷。我已经使用调试器浏览了整个SnapshotSpan结构,但找不到行号的任何内容。

如何获取当前的SnapshotSpan行号?

当我已经有了结果的位置并希望根据这些位置在编辑器中放置字形/分类/工具提示/轮廓区域/等时,框架的逻辑是什么?

1 个答案:

答案 0 :(得分:0)

我终于发现我可以通过以下方式获得行号:

var lineNumber= span.Snapshot.GetLineNumberFromPosition(span.Start.Position) + 1;

+1是因为内部值从0开始,而编辑器中的可见行从1开始(或者因为我的文件分析使我的行从1开始)。