|
大関さん、おはようございます。
> ...ご不快に感じられたようで申し訳ございません。
ぜんぜん、そんなことはありません。
1000 回、成功したとして、いつも、どの環境でもうまくいく問題では無いと思
いました。昨日の状態ではマクロの不確定なテストになってしまいます。オンラ
インモードで書きこんだので誤字脱字が多くてすみません。帰宅前でした。
tagjump, backtagjump, の指摘されている問題を、
あちきは、通常は、setactivehidemaru 0; で回避しています。
確かに 100 % の回避は出来ません。そうみたいです。
> ということで、投稿の意図を説明させていただきました。...
1) "(&G) grep - わからん ! " は、grep の後の jump の例です。
grep のあと、結果と、元のファイル行き来をしています。
2) KZ_GrepUp.mac は grep 後の本文更新です。
200 bytes 以内に改行がある文字列で、ファイル名に ( ) が無ければ動きます。
これは、あちきが使用している「 grep 後の本文更新」の雛型、スケルトンです。
用途に応じて書き換えて使用しています。この中に、試行錯誤があります。
grep で、数千行探し出して、200 - 300 ファイルの更新の実績が、
あちきの環境ではあります。Windows 95 で K2-233 です。
本来の動きをテストした後で、でないと仕様が判らないとおもいますので、
KZ_GrepUp.mac を改造してみてください。
この「試行錯誤」に関しては、マクロ本来の仕様であるという保証はありません。
それと「試行錯誤」に関しては質問はなしと言うことにしてください。
結果オーライということで ...
「本文更新」によって行番号が変わると正常な動きにはなりません。その時には、
grep の結果であるファイルの後ろから処理を開始するとうまく行きます。
やりたいことは、いつもファイル数と、リソースを考えて処理しないと、
適切な処理時間が得られません。「わからん」は参照なので 5 ファイルを MAX で
処理しています。KZ_GrepUp.mac は必ず、クローズするか、しないかのきめ打ちです。
大関さんの環境で、
KZ_GrepUp.mac がだめであれば、tagjump, backtagjump, をあきらめて、
grep のファイル名、行番号を得て、setactivehidemaru; closehidemaru;
で処理を行なうしか方法がありません。
------------------------------------------------------------------------
// "(&G) grep - わからん ! "
ppkn_grep1:
$wk1 = input(directory2+"\n\ngrep - 検索する文字列 ?","[0-9][0-9]\\.[0-9][0-9]");
if( ! result ){ endmacro; }
if( strlen($wk1) == 0 ){
grepdialog;
if( ! result ){ endmacro; }
if( iskeydown( 0x1B ) ){ // [Esc]
if( basename == "" && x+y == 0 ){
quit; endmacro;
} else {
endmacro;
}
}
} else {
grep $wk1, "*.*", directory2, regular, icon;
}
if( basename == "" && code == eof ){
quit; endmacro;
}
config "t4 w200"; readonlyswitch;
while( ! iskeydown( 0x1B ) ){ // [Esc]
setactivehidemaru 0; title 1;
if( basename == "" ){
inputpos "わからん ! - [Enter] : tagjump;";
if( iskeydown( 0x1B ) ){ break; } // [Esc]
golinetop2; tagjump;
} else {
inputpos filename2 + " - わからん ! - [Enter] : backtagjump;";
if( iskeydown( 0x1B ) ){ break; } // [Esc]
golinetop2; backtagjump;
}
#i = hidemarucount;
if( #i > 5 ){ // MAX 5 file だけ残す。
closehidemaru #i-1; closehidemaru 5;
}
}
#i = hidemarucount;
while( #i > 1 ){
#i = #i - 1; closehidemaru #i;
}
title 1;
setsearch "", 0x00; // reset. 記憶にありません !
endmacro;
// end of macro.
------------------------------------------------------------------------
------------------------------------------------------------------------
//*1 *** Macro for 「秀丸エディタ」 ***
//*1 【マクロ名】 KZ_GrepUp.mac - Ver. 02.02 - 1998/10/13
//*1 【作者】 番頭++ / E-mail:xxxxxxxx@niftyserve.or.jp
//*1 【機能】
//*1 ・Grep 行の本文更新処理を行なう。
//*1 ・自由に変更してご使用下さい !
//
question "Grep 行の本文更新処理を行ないますか ?";
// if( ! result ){ message "マクロを中止します !"; endmacro; }
if( ! result ){ endmacroall; }
question "Grep 行の更新後ファイルをクローズしますか ?";
if( iskeydown( 0x1B ) ){ endmacroall; } // [Esc]
#sw_close = result;
// disabledraw;
// gofiletop;
$time_start1 = time;
$str_f1 = filename2;
//R #handle1 = hidemaruhandle( findhidemaru( $str_f1 ) );
//R setactivehidemaru #handle1;
golinetop2;
while( code != eof && code != 0x0d ){
golinetop2; beginsel;
while( code != '(' ){
if( code == 0x0d ){
message "Bug-1 - file name !!!"; escape; endmacroall;
}
right;
}
$str_f2 = gettext(seltopx,seltopy,selendx,selendy); escape;
while( code != ':' ){
if( code == 0x0d ){
message "Bug-2 - grep !!!"; escape; endmacroall;
}
right;
}
right 2; beginsel; golineend2;
$str_line = gettext(seltopx,seltopy,selendx,selendy); escape;
if( $str_line == "" ){
message "Bug-3 - no line !!!"; escape; endmacroall;
}
golinetop2;
if( findhidemaru( $str_f2 ) == -1 ){
if( #sw_close ){
openfile " /h " + $str_f2;
} else {
openfile $str_f2;
}
}
setactivehidemaru hidemaruhandle(findhidemaru($str_f1));
tagjump;
if( ! result ){
message "ERROR - tagjump failed !";
endmacroall;
}
setactivehidemaru hidemaruhandle(findhidemaru($str_f2));
beginsel; golineend2; delete;
insert $str_line;
golinetop2;
if( #sw_close ){
saveas filename2;
if( ! result ){
message "ERROR - saveas failed !\n\n" + filename2;
endmacroall;
}
}
backtagjump;
if( ! result ){
message "ERROR - backtagjump failed !";
endmacroall;
}
setactivehidemaru hidemaruhandle(findhidemaru($str_f1));
if( #sw_close ){
closehidemaru 1;
}
golinetop2; golineend2; right;
}
beep; message "Start : " + $time_start1 + "\nEnd : " + time;
// gofiletop;
enabledraw;
beep;
endmacro;
// end of macro.
------------------------------------------------------------------------
|
|