如何在Visual Studio源代码编辑器中设置“相对文本”标记或分类器

问题描述 投票:0回答:1

我正在开发Visual Studio扩展,我需要在源代码窗口中放置标签,分类器或装饰物。我已经通过一些源代码分析获得了一些行/列信息。第一步,我可以将它们成功放置。当用户继续修改源代码时,就会出现问题:我的“标记”很快就变得不同步。

我已经找到以下启动文档:https://docs.microsoft.com/en-us/visualstudio/extensibility/walkthrough-creating-a-margin-glyph?view=vs-2017和其他类似页面。我的理解是,默认方法是每次修改或在屏幕上滚动代码时,都会调用主放置例程(例如“ IEnumerable> ITagger.GetTags(NormalizedSnapshotSpanCollection spans)”)。当源代码分析既简单又快速时,这很好。您可以经常刷新。

但是,我不能这样做。我的分析更加复杂和漫长。我不能一直刷新。我了解我需要在源代码窗口中将“标记”设为“相对文本”,这意味着我希望它们被锚定到某些文本(最初位于此行/列)并在用户继续修改源代码时随其移动周围的代码。

  • 是否有某种方式可以将“标记”(字形,语法着色标记,文本中的图形标记以及BTW其他所有标记,例如工具提示,灯泡​​建议,轮廓文本等)设置为“文本-relative”,以便根据用户类型自动更新?有一些例子吗?

  • 或者当用户修改代码时,我是否必须自己更新“标记”展示位置?如何获取修改信息(原始光标位置,添加/删除的字符/行数)?我似乎无法通过给定的SnapshotSpan对象找到它。

c# visual-studio-extensions
1个回答
0
投票

不确定您是否尝试过以下链接,它是否符合您对“相对文本”标签的要求

https://docs.microsoft.com/en-us/visualstudio/extensibility/creating-an-extension-with-an-editor-item-template?view=vs-2017

创建相对于文本的装饰扩展名

编辑器文本装饰模板创建相对于文本的装饰使用框装饰文本字符“ a”的所有实例具有红色轮廓和蓝色背景。它是相对于文本的因为该框始终覆盖'a'字符,即使它们是移动或重新格式化。

© www.soinside.com 2019 - 2024. All rights reserved.