|
tsuboi さん、こんばんは。
杉浦 まさき です。
>検索対象は、選択範囲だけには留まらず、それ以降のファイル末までの行も含まれて
>しまいます。
ん?これはバグですかね?
>なお、お教えいただいたURLにはアクセスできましたが、「選択した範囲内で検
>索」には長時間待っても繋がらず、まだ見ておりません。
んではちょっと長いですがここにその内容をアップしときます。
<PRE>
//--------------------------------------------------------------------------
-
// 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;
//--------------------------------------------------------------------------
-
</PRE>
|
|