下午好,
我创建了一个visual studio包,它将Verilog语言注册为有效的内容类型。
我有语法高亮,概述,智能缩进等所有工作。
但是,我希望能够让Visual Studio通过Edit->Advanced->Format Document/Selection
自动格式化整个文档。目前这些选项是不可见的,我希望我必须让VS2010知道(不知何故)可以调用这些方法,并提供正确的方法来进行这种格式化。
我似乎无法在VS2010 SDK和文档中找到任何格式化参考。我希望ISmartIndent
是我正在寻找的解决方案,但似乎这个代码只在空行上运行,或者当按下回车键时。
有没有人对如何解决这个问题有任何提示或想法?
谢谢,
Giawa
编辑:我正在使用VS2010引入的托管扩展框架来实现这一目标。我正在用C#编写(并且刚刚在我的问题中添加了c#标签)。感谢
答案 0 :(得分:2)
MEF不是完成创建语言服务任务的正确方法。相反,Managed Package Framework(MPF)应该用于注册语言服务并执行语法突出显示,概述,解析,格式化,解析等任务。
由于我的问题是关于格式化,我将在答案中介绍一点。您必须覆盖为您的语言服务创建的自定义ReformatSpan对象中的Source方法。 MSDN webpages for VS2005上有一个很好的例子(也适用于VS2010)。
您也可以通过直接调用ReformatSpan方法随时强制格式化。以下是我的代码中的一个工作示例:
Region region = service.GetRegionContainingLine((line > 0 ? line - 1 : 0));
if (region != null)
{
using (EditArray mgr = new EditArray(this, service.LastActiveTextView, true, "Reformat Brace"))
this.ReformatSpan(mgr, region.ToSpan());
}
感谢@ James McNellis指出我正确的方向。
答案 1 :(得分:1)