2

こんにちは、

Verilog言語を有効なコンテンツタイプとして登録するVisualStudioパッケージを作成しました。

構文の強調表示、アウトライン、スマートインデントなどがすべて機能しています。

ただし、VisualStudioでドキュメント全体を自動的にフォーマットできるようにしたいと思いますEdit->Advanced->Format Document/Selection。現在、これらのオプションは表示されていません。これらのメソッドを呼び出すことができることをVS2010に(何らかの方法で)知らせ、このフォーマットを行うための正しいメソッドを提供する必要があると思います。

VS2010SDKとドキュメントにフォーマットへの参照が見つからないようです。ISmartIndentそれが私が探していた解決策になること を望んでいましたが、このコードは空の行でのみ実行されるか、Enterキーが押されたときにのみ実行されるようです。

この問題を解決するためのヒントやアイデアはありますか?

ありがとう、

ジャワ

編集:これを実現するために、VS2010で導入されたマネージド拡張フレームワークを使用しています。私はC#で書いています(そして質問にc#タグを追加しただけです)。ありがとう

4

2 に答える 2

2

MEFは、言語サービスを作成するタスクを実行するための正しい方法ではありません。代わりに、Managed Package Framework(MPF)を使用して、言語サービスを登録し、構文の強調表示、アウトライン化、解析、フォーマット、解析などのタスクを実行する必要があります。

私の質問はフォーマットに関するものだったので、それについて少し説明します。言語サービス用に作成したカスタムSourceオブジェクトのReformatSpanメソッドをオーバーライドする必要があります。VS2005のMSDNWebページに良い例があります(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());
}

私を正しい方向に向けてくれた@JamesMcNellisに感謝します。

于 2011-07-25T16:34:05.777 に答える
1

どうぞ: http: //msdn.microsoft.com/en-us/library/ee197665.aspx

于 2011-07-20T20:47:08.657 に答える