setsearch文(Ver8.91対応版)
目次検索系文− setsearch文
 setsearch文は、秀丸エディタが内部で保持している検索バッファの内容を設定します。検索バッファは、「上候補」や「下候補」の際に参照されるバッファで、検索文字列と、検索の方法(正規表現かどうかなどのフラグ)を保持しています。

 setsearchコマンドで検索バッファの内容を設定してからfindup/finddownを実行すると、searchup/searchdownを実行したのと同じ結果が得られます。
 (参照:findup finddown)
setsearch 文字列, フラグ1 [, フラグ2]
 フラグ1は、各ビットごとのORの値を指定します。
単語の検索   0x00000001(ビット0)
大文字/小文字の区別   0x00000002(ビット1)
置換かどうか   0x00000004(ビット2)(置換の場合に1)
置換の場合、問い合わせの有無   0x00000008(ビット3)
正規表現   0x00000010(ビット4)
あいまい検索   0x00000020(ビット5)
ファイル名一覧だけ作成   0x00000040(ビット6)(grep用)
次の秀丸エディタも続けて検索   0x00000080(ビット7)
サブフォルダも検索   0x00000100(ビット8)(grep用)
最小化状態で実行   0x00000200(ビット9)(grep用)
ファイル名をフルパスで出力   0x00000400(ビット10)(grep用)
検索文字列の強調   0x00000800(ビット11)(検索,grep用)(V5.00以降)
注意:setsearch等で設定する場合はビット13(0x00002000)も必要
検索文字列の強調   0x00001000(ビット12)(置換用)(V5.00以降)
注意:setsearch等で設定する場合はビット13(0x00002000)も必要
検索文字列の強調を変更   0x00002000(ビット13)(V5.00以降)
追加の条件(普通の文字)   0x00010000(ビット16)(V6.50以降)
追加の条件(コメント)   0x00020000(ビット17)(V6.50以降)
追加の条件(#ifdef等の無効部分)   0x00040000(ビット18)(V6.50以降)
追加の条件(スクリプト部分)   0x00080000(ビット19)(V6.50以降)
追加の条件(文字列)   0x00100000(ビット20)(V6.50以降)
追加の条件(HTML/XMLタグ)   0x00200000(ビット21)(V6.50以降)
追加の条件(「のみ」)   0x00400000(ビット22)(V6.50以降)
追加の条件が有効であるかどうか   0x00800000(ビット23)(V6.50以降)
一周する   0x01000000(ビット24)(V6.50以降)
検索したら閉じる   0x02000000(ビット25)(V6.50以降)
バックアップ   0x04000000(ビット26)(grepして置換用)(V6.50以降)
保存の前に確認   0x08000000(ビット27)(grepして置換用)(V6.50以降)
出力先   0x30000000(ビット28,29)(grep用)(V6.50以降)
searchoption2が有効かどうか   0x80000000(ビット31)(V8.00以降)
 フラグ2は拡張されたフラグで、searchoption2に相当するフラグを設定します。(V8.00以降)
 フラグ2は省略できます。
 フラグ2を有効にするためには、フラグ1のほうで0x80000000のビットを立てる必要があります。
ヒットしない行   0x00000001(ビット0)(grep用)(V8.00以降)
追加の条件で「指定の範囲/カラーマーカー内」が有効かどうか   0x00000002(ビット1)(検索,置換用)(V8.56以降)
対象となる範囲は、settargetcolormarkerで指定します。
フラグ1の「追加の条件が有効であるかどうか」の0x00800000も必要です。
「searchoption2が有効かどうか」の0x80000000と合わせて0x80800000が必要です。
 setsearchと逆に、検索バッファの内容を参照するには、searchbuffer, searchoptionという値を使います。
 「選択した範囲内のみ」のフラグはありません。find2を使ってダイアログを出す場合、「選択した範囲内のみ」の指定は、forceinselectを使います。

 マクロの中でsearchup/searchdownを使うと、検索バッファの内容が書き換えられてしまいます。そうすると、ユーザが次に上候補/下候補コマンドを使った時に予期しない動作をしてしまうことがあります。

 こういう場合に、setsearch/searchbuffer/searchoptionを使うと便利です。
 V8.20機能追加:V8.20から、マクロの先頭付近で「setcompatiblemode 0x20000;」を実行するだけで同様のことが簡単に実現出来るようになりました。
$s = searchbuffer;
#f = searchoption;
…
マクロ本体…
…
setsearch $s, #f;
endmacro;

例(V8.20以降の場合)
setcompatiblemode 0x20000;
…
マクロ本体…
…
endmacro;
 検索文字列の強調を変更する場合は、ビット13を同時にセットしないといけません。
 例えば、0x0000を指定すると、検索文字列の強調のチェックボックスの状態は以前の状態を引き継ぎます。
 0x2000を指定すると、検索文字列の強調は無効になります。
 0x3800を指定すると、検索文字列の強調は有効になります。(検索,置換とも有効にする場合)

 検索文字列の強調のフラグは、検索/置換/grepダイアログのチェックボックスの状態を指します。
 このフラグをセットしても、検索文字列の強調の表示状態が即座に反映されるわけではありません。
 実際に検索文字列の強調をさせるには、hilightfound文で行います。

 検索文字列には上限があります。上限を超える可能性がある場合は事前に文字数をカウントして判断する必要があります。
 参照: 検索/置換文字列の上限について