|
お世話になります。久しぶりのTAKAです。
以前から気になっていた現象で、再現方法をかなり特定出来ること
が出来ましたので、お知らせします。
秀丸はVersion 3.05,
会社で使用しているWindowsNT Workstation 4.0(Service Pack 4)
では再現するのですが、自宅で使用しているWindows98では再現し
ませんでした。
マクロを使って
1.ファイルをオープン(「openfile」を使用)
2.1のファイル内を検索(「searchdown」を使用)
3.1のファイルをクローズ
という処理を行うと、正常に処理出来ない場合があります。(正常
に処理出来る場合もある)
正常に処理出来ない場合には、アクティブになるはずのないものが
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
アクティブになったり、ファイルが閉じられなかったりします。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
その現象を最も簡単に再現するプログラムが以下のマクロです。
--------- ここから -----------------------------------------
// $tbl[0] = "d:\\private\\tags"; // 2M程度
// $tbl[1] = "d:\\private\\tags2"; // 2M程度
$tbl[0] = "d:\\private\\test"; // 100バイト程度
$tbl[1] = "d:\\private\\test2"; // 100バイト程度
#fh = hidemaruhandle( 0 );
#i = 0;
while( #i < 2 )
{
openfile "/h /r " + $tbl[#i];
// openfile $tbl[#i];
#search_fh = hidemaruhandle( 0 );
// #wait = 100;
// while( #wait > 0 )
// {
// #wait = #wait - 1;
// }
searchdown "Test"; // 検索
setactivehidemaru #fh;
closehidemaru #search_fh;
#i = #i + 1;
}
endmacro;
--------- ここまで -----------------------------------------
いろいろテストしていて、謎な現象がいくつかありました。
[謎1]
ステルスモードでのオープンをやめて、通常のオープンで試すと正
常に処理出来やすい。但し、2M程度のファイルの場合は、正常に出
来ない場合がある。
[謎2]
検索を行わないと、正常に処理出来る。
[謎3]
「openfile」と「searchdown」の間にウエイトを入れると正常に処
理出来る。
[謎4]
「openfile」と「searchdown」が1回だと正常に処理出来る場合が
ある。(正常に処理出来ない場合もある。)
ステルスモードで2回行うと、ほぼ確実に処理出来ません。
何が、原因でしょうか?
「openfile」と「searchdown」が絡んでいることは間違いないと思
うのですが。
ちなみに、何がしたいかと言うと、複数ファイルのタグファイルを
使ってのタグジャンプがしたかったのです。(候補が複数ある場合
は、メニュー表示)
#原因が特定出来ない場合は、ウエイトを入れるか、検索の代わり
に「grep」を使って実現するしかないかなー
ついでに、新しいマクロ命令でヘルプファイルのキーワードに登録
されていないものがいくつかありましたので、お知らせします。
showruler,tabruler,rulercolor,rulerbackcolor,correctlineno,
msdnlibrary,filename2,basename2,directory2,filename3,
basename3,directory3,loaddllfile
|
|