如何使Visual Studio 2017自定义编辑器刷新文本视图?

时间:2018-01-29 16:06:00

标签: visual-studio-extensions

我创建了一个Visual Studio自定义编辑器扩展(实现ITagger<T>)。它完美地运行并根据其背后的域特定语言应用语法突出显示。尽管如此,当我编辑文本时,VS重新标记并重新格式化编辑的行。

但是,当一个特定的行改变时,我需要强制重新格式化编辑行后面的所有可见行。我不知道该怎么做。我尝试了很多替代方案,包括回复Changed背后的TextBuffer事件。

您能帮助我提出想法,或者将源代码示例应用于处理此问题的自定义编辑器实现吗?内置的C#编辑器可以做到这一点:当我编辑一行时,它变成一个多行注释,文本视图也会相应地改变。

2 个答案:

答案 0 :(得分:0)

扩展代码Formatter可以格式化类文件,并根据StyleCop规则排列字段,属性和方法。也许这是你想要的扩展:

Bluetooth Pairing Part 4

答案 1 :(得分:0)

一种粗暴的方法是关闭文档并再次打开它。

string path = dte.ActiveDocument.FullName;
dte.ActiveDocument.Save();
dte.ActiveDocument.Close();
dte.ItemOperations.OpenFile(path);

虽然,我希望有更好的方法来处理这个问题。

编辑:好吧,我觉得我找到了更好的方法。

在tagger类中声明了一个事件(实现了ITagger接口)。提升界面可以完美地完成工作。