//--------------------------------------------------------------------------- // SEARCHIN : 範囲選択した領域内で検索を実行するルーチン // [Usage] : // call SEARCHIN $$s_str, ##flag, ##mode; // ##num = ##return; // // $$s_str : 検索文字列 // ##flag : 検索オプションのフラグ(下記の表を参照) // ##mode : = 0 なら下方向検索、= 1 なら上方向検索 // ##num : 見つかったら = 1、見つからなければ = 0 // // 備考: Ver.2.16 以降では検索系のコマンドに inselect オプション // (範囲選択領域内の検索)が追加され、 // このルーチンと同等のことが簡単にできるようになりました。 // // 検索オプションと対応する数字: //  <検索オプション>      <10進数> //   単語の検索             1 //  大文字/小文字の区別        2 //  正規表現              16 //  あいまい検索            32 //  次の秀丸も検索(Win95のみ)     128 // ※ 指定したいオプションに対応する数を足した物を第2引数に指定する。 // ex. 「単語の検索」で「次の秀丸も検索」… 1 + 128 = 129 を指定 // SEARCHIN: escape; // 選択範囲の座標を取得 moveto selendx, selendy; ##ex = column+1; ##ey = lineno; moveto seltopx, seltopy; ##tx = column+1; ##ty = lineno; ##selfound = getininum("hidemaru.ini","Env","SelectFound"); writeininum "hidemaru.ini", "Env", "SelectFound", 1; // 前回の検索文字列、検索オプションを保存 $$s_buf = searchbuffer; ##s_opt = searchoption; // 検索条件を設定 if( (##2 & 32) != 0 ) ##2 = (##2 | 16); // あいまい検索には正規表現が必要 setsearch $$1, ##2; if( !##3 ) finddown; else findup; if( !result ) ##r = 0; else { disabledraw; escape; ##tc = column + 1; ##tl = lineno; moveto selendx, selendy; ##ec = column + 1; ##el = lineno; // 選択範囲を出たら終了 if( (##el>##ey) || (##tl<##ty) || (##el==##ey)&&(##ec>##ex) || (##tl==##ty)&&(##tc<##tx) ) ##r = 0; else ##r = 1; } enabledraw; setsearch $$s_buf, ##s_opt; // 検索条件の復帰 writeininum "hidemaru.ini", "Env", "SelectFound", ##selfound; return ##r; //---------------------------------------------------------------------------