2

下午好,

我创建了一个将 Verilog 语言注册为有效内容类型的 Visual Studio 包。

我有语法高亮、大纲、智能缩进等所有工作。

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

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

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

谢谢,

贾瓦

编辑:我正在使用 VS2010 引入的托管扩展框架来完成此操作。我正在用 C# 编写(并且刚刚在我的问题中添加了 c# 标签)。谢谢

4

2 回答 2

2

MEF 不是完成创建语言服务任务的正确方法。相反,应该使用托管包框架 (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为我指明了正确的方向。

于 2011-07-25T16:34:05.777 回答
1

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

于 2011-07-20T20:47:08.657 回答