我正在用C#开发Visual Studio扩展,并且我想基于对该文件的分析,在文件上添加分类。我得到了每个缺陷的一组位置(文件,行,列)的分析结果。
基于MS doc,我已经看到我们应该实现IClassifier.GetClassificationSpans方法。我可以看到我们得到了一组SnapshotSpan。这些跨度似乎是打开文件中的完整行:当前显示的可见行和当前正在编辑的行。
但是,正如之前所说,我的位置已经存在一系列缺陷。我想获取当前的跨度行号,以便可以检查该行是否注册了缺陷。我已经使用调试器浏览了整个SnapshotSpan结构,但找不到行号的任何内容。
如何获取当前的SnapshotSpan行号?
当我已经有了结果的位置并希望根据这些位置在编辑器中放置字形/分类/工具提示/轮廓区域/等时,框架的逻辑是什么?
答案 0 :(得分:0)
我终于发现我可以通过以下方式获得行号:
var lineNumber= span.Snapshot.GetLineNumberFromPosition(span.Start.Position) + 1;
+1是因为内部值从0开始,而编辑器中的可见行从1开始(或者因为我的文件分析使我的行从1开始)。