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

本文关键字:文档 格式 自定义 可扩展性 VS2010 | 更新日期: 2023-09-27 18:03:01

下午好,

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

我有语法高亮,提纲,智能缩进等工作。

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

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

谁有什么建议或想法,我如何才能解决这个问题?

谢谢,

Giawa

编辑:我正在使用VS2010引入的托管扩展框架来完成此任务。我是用c#写的(只是在我的问题上加上了c#标签)。由于

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

MEF不是完成创建语言服务任务的正确方法。相反,应该使用托管包框架(Managed Package Framework, MPF)来注册语言服务并执行诸如语法高亮显示、概述、解析、格式化、解析等任务。

由于我的问题是关于格式的,我将在我的回答中涉及一点。您必须在为语言服务创建的自定义Source对象中重写ReformatSpan方法。在VS2005的MSDN网页上有一个很好的例子(也适用于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为我指出了正确的方向。

给你:http://msdn.microsoft.com/en-us/library/ee197665.aspx