|
検索後の動向に関しましてですが、秀丸マクロ上にて検索ヒットした
文字列を対象に処理が行われるようなものの場合、作者の意図した結
果が得られないことが確認されています。
動作環境にて検索での表示を「点滅表示」にしていた場合、秀丸マク
ロ上にて鍵となる文字列を検索し、検索ヒットした文字列の選択範囲
を縮小、拡大した後、目的の処理を行わすようなマクロでは点滅表示
のため選択終了座標が取得できず作者の意図とは反した動作をしてし
まいます。
このため、マクロを使用する人の環境によっては正常動作しないといった
感じとなっています。
この検索後の点滅表示に関するマクロでの動向を選択範囲と同様で
検索ヒットした文字列の終了座標を取得できるようにはできません
でしょうか?
「カーソル座標 + 文字列の長さ」で求めれると言われればそれで
終わりですが、こういった検索を利用するマクロを利用する場合
マクロ作者に対して不具合報告としてあがってくるか、自分で修正
を加えるかするしかないので。
(例)
golinetop;
beginsel;
golineend;
endsel;
#sx1 = seltopx;
#sy1 = seltopy;
#ex1 = selendx;
#ey1 = selendy;
searchdown "0x[0-9A-Fa-f]+," , regular, inselect, nohilight;
if (result) {
#sx2 = seltopx;
#sy2 = seltopy;
#ex2 = selendx;
#ey2 = selendy;
} else {
#sx2 = 0;
#sy2 = 0;
#ex2 = 0;
#ey2 = 0;
}
// デバッグ(座標表示)
message "【行選択時】\n" +
"開始 (X, Y) = (" + str(#sx1) + ", " + str(#sy1) + ")\n" +
"終了 (X, Y) = (" + str(#ex1) + ", " + str(#ey1) + ")\n\n" +
"【検索選択】\n" +
"開始 (X, Y) = (" + str(#sx2) + ", " + str(#sy2) + ")\n" +
"終了 (X, Y) = (" + str(#ex2) + ", " + str(#ey2) + ")\n\n";
上記は、C言語などの配列(テーブル)の1行を選択したのち、
その中から16進数を探し出した後、何か処理をさせるといった
感じの場合の一部分を座標だけテスト表示するようにしたものです。
配列が200を超えるスイッチテーブルなどのような組み込み系で
扱うものに関してスイッチの座標がずれた場合などマクロにて自動
で変更させたりする場合役立つのですが、動作環境によっては最初
に述べたような感じなので、マクロでの seltopx などの動向を変え
れるようでしたらよろしくお願いいたします。
|
|