VS2010可扩展性:自定义文档格式

时间:2011-07-20 20:42:40

标签: c# visual-studio visual-studio-2010 visual-studio-extensions

下午好,

我创建了一个visual studio包,它将Verilog语言注册为有效的内容类型。

我有语法高亮,概述,智能缩进等所有工作。

但是,我希望能够让Visual Studio通过Edit->Advanced->Format Document/Selection自动格式化整个文档。目前这些选项是不可见的,我希望我必须让VS2010知道(不知何故)可以调用这些方法,并提供正确的方法来进行这种格式化。

我似乎无法在VS2010 SDK和文档中找到任何格式化参考。我希望ISmartIndent是我正在寻找的解决方案,但似乎这个代码只在空行上运行,或者当按下回车键时。

有没有人对如何解决这个问题有任何提示或想法?

谢谢,

Giawa

编辑:我正在使用VS2010引入的托管扩展框架来实现这一目标。我正在用C#编写(并且刚刚在我的问题中添加了c#标签)。感谢

2 个答案:

答案 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)