gpt4 book ai didi

c# - VS2010 扩展性 : Custom document formatting

转载 作者:行者123 更新时间:2023-11-30 22:36:55 27 4
gpt4 key购买 nike

下午好

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

我的语法高亮、大纲、智能缩进等都可以正常工作。

但是,我希望能够让 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com