皆さんが私が賢くなるのを手伝ってくれることを願っています。シンプルな VS2012 アドインを作成しています。アドインは、当社で定期的に実行されるタスクに固有の、より広範な検索/置換機能です。Visual Studio に [ツール] メニュー オプションを追加しました。これにより、複数の検索/置換テキスト ボックスを入力できる拡張検索/置換ダイアログが開きます。最後に、元のダイアログで使用できるオプションのチェックボックスを含める必要があります (「大文字と小文字を一致させる」、「単語全体を一致させる」、「正規表現を使用する」)。
問題は、ReplaceText または ReplacePattern メソッドでは、オプションの int パラメーターを 1 つしか渡せないことです。オプションの1 つを提供するために使用される列挙型は、次のような vsFindOptions です。
[Guid("A457303F-D058-4415-A2B4-A81B148C7689")]
public enum vsFindOptions
{
vsFindOptionsNone = 0,
vsFindOptionsMatchWholeWord = 2,
vsFindOptionsMatchCase = 4,
vsFindOptionsRegularExpression = 8,
vsFindOptionsBackwards = 128,
vsFindOptionsFromStart = 256,
vsFindOptionsMatchInHiddenText = 512,
vsFindOptionsWildcards = 1024,
vsFindOptionsSearchSubfolders = 4096,
vsFindOptionsKeepModifiedDocumentsOpen = 8192,
}
MSDN [ 1 ] のドキュメントを調べていたところ、次の例を確認できます。
[...].ReplacePattern("test", "done deal",
(int)vsFindOptions.vsFindOptionsNone, ref dummy);
それはすべて良いことですが、私がやりたいことは次のようなものです:
[...].ReplacePattern(@"<span (.\w.+?>)", string.Empty,
(int)vsFindOptions.vsFindOptionsRegularExpression,
(int)vsFindOptions.vsFindOptionsMatchWholeWord);
元の検索/置換ダイアログを考えてみましょう。オプションはチェックボックスで、この複数選択オプションですが、ReplacePattern メソッドは 1 つの int しか受け入れません。このように値を単純に追加できますか:
(int)vsFindOptions.vsFindOptionsRegularExpression+
(int)vsFindOptions.vsFindOptionsMatchWholeWord ?
(後でこれを試しますが、atm でデバッグの問題が発生し、vs でアドインが使用できなくなります)