下午好,
我创建了一个 Visual Studio 包,它将 Verilog 语言注册为有效的内容类型。
语法高亮、大纲、智能缩进等功能都可以正常工作。
但是,我希望能够让 Visual Studio 通过 Edit->Advanced->Format Document/Selection
自动格式化整个文档。 。目前这些选项是不可见的,我希望我必须让 VS2010 知道(以某种方式)可以调用这些方法,并提供正确的方法来执行此格式化。
我似乎在 VS2010 SDK 和文档中找不到任何关于格式化的引用。我希望ISmartIndent
将是我一直在寻找的解决方案,但似乎此代码仅在空行上运行,或者在按下回车键时运行。
有人对我如何解决这个问题有任何建议或想法吗?
谢谢
吉瓦
编辑:我正在使用 VS2010 引入的托管扩展框架来完成此任务。我正在用 C# 编写(并且刚刚将 c# 标签添加到我的问题中)。谢谢
最佳答案
MEF 不是完成创建语言服务任务的正确方法。相反,应该使用托管包框架(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为我指明了正确的方向。
关于c# - VS2010扩展性: Custom document formatting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6768282/