|
localgrepをicon付きで使うとおかしな現象が起きることがある
grep文実行後のresultについてはヘルプに以下のような記述があります。
「resultには見つかった個数が入ります。途中で中断された場合はresultは-1になり
ます。」
localgrep文でもgrep文と同様に、見つかった個数が入るのであればそれを利用し
たいと思っていたのですが、そのようにはなっていないようです。
あるファイル(論理行数が5287、「秀丸」を含んだ行が220)を対象ファイルとし
て、以下のようなマクロで実験してみました。
//----------------------------------------
//localgrep "秀丸", noregular, nocasesense;//◆(A)
localgrep "秀丸", noregular, nocasesense, icon;//◆(B)
#r = result;
if ( #r == -1 ) {
message "localgrep が中断されました。";
endmacro;
}
gofileend;
message "result = " + str(#r)
+ " ヒット行数 = " + str(lineno - 1);
endmacro;
//----------------------------------------
◆(A)のように、icon なしで実行した場合のmessage文の内容は以下の通りでした。
正常終了した場合、「result = 1 ヒット行数 = 220」
強制中断した場合、「result = 1 ヒット行数 = 57」
正常に終了しても、途中で中断しても、result = 1 になり、正常に終わった場合
も見つかった個数は入らないようです。
◆(B)のように icon をつけて実行すると、おかしな現象が起きる場合があります。
正常に終了して「result = 1 ヒット行数 = 220」のメッセージが出るときもあ
りますが、〈結果ファイルは出ているのに、いつまでたってもメッセージが出てこな
い〉ことがあります。(半々ずつぐらいです。)
メッセージが出てこない場合、いろいろやってみた状況を記します。
@ 結果ファイルにおいて適当な行を選んでタグジャンプを指示するとすると、「re
sult = 1 ヒット行数 = 220」が出てきます。(タグジャンプはされません。)
A 結果ファイルの「閉じるボタン[×]」をクリックすると、「result = 0 ヒ
ット行数 = 5286」というメッセージが出てきます。「5286」というのは、実験に使
ったファイルの行数マイナス1です。
B 対象ファイルに戻るために、そのファイルのウィンドウをクリックすると、「re
sult = 1 ヒット行数 = 220」が出てくることもあれば、「マクロの実行を中断し
ますか?」ときいてきて、「はい」で答えると、「result = 0 ヒット行数 = 528
6」が出てくることもあります。「他の秀丸がマクロ実行中です」が出てくることも
あります。
@〜B以外の状況も発生します。
localgrep を icon 付きで使いたいと思っていますが、このように動作が一定せず、
戸惑っています。この辺の事情なり、上記マクロの不備なりを指摘していただければ
ありがたく思います。
なお、OSは、Windows Me で、秀丸は V. 4.14 です。
|
|