我创建了一个Visual Studio自定义编辑器扩展(实现ITagger<T>
)。它完美地运行并根据其背后的域特定语言应用语法突出显示。尽管如此,当我编辑文本时,VS重新标记并重新格式化仅编辑的行。
但是,当一个特定的行改变时,我需要强制重新格式化编辑行后面的所有可见行。我不知道该怎么做。我尝试了很多替代方案,包括回复Changed
背后的TextBuffer
事件。
您能帮助我提出想法,或者将源代码示例应用于处理此问题的自定义编辑器实现吗?内置的C#编辑器可以做到这一点:当我编辑一行时,它变成一个多行注释,文本视图也会相应地改变。
答案 0 :(得分:0)
扩展代码Formatter可以格式化类文件,并根据StyleCop规则排列字段,属性和方法。也许这是你想要的扩展:
答案 1 :(得分:0)
一种粗暴的方法是关闭文档并再次打开它。
string path = dte.ActiveDocument.FullName;
dte.ActiveDocument.Save();
dte.ActiveDocument.Close();
dte.ItemOperations.OpenFile(path);
虽然,我希望有更好的方法来处理这个问题。
编辑:好吧,我觉得我找到了更好的方法。
在tagger类中声明了一个事件(实现了ITagger接口)。提升界面可以完美地完成工作。