|
// testtagjump.mac
// 緊急対策 信頼性? マシかどうかはテストしてからどうぞ。
// tagjump と hidemaruhandle の返値のようす
// どうも新面は開くが秀丸管理に登録されるのが遅れるようだ?
// それを見ているマクロもおかしくなる。
// tagjump backtagjump (directtagjump grep localgrep...)
// win開いているが秀丸管理情報が同期していない 飛んでから登録?
// findhidemaru は不調?
//
// 6行以上タグのある行でマクロ実行
goto main;
TAGJUMP:// ---------------------------------------
#hwnd=hidemaruhandle(0);// #hwnd はグローバル変数に
golinetop2 searchdown "(";$$fname=gettext(0,y,x,y);// 飛び先
right; beginsel searchdown ")";
$$no=gettext(seltopx,seltopy,selendx,selendy);
##no=val($$no); // 行番号
try1:
#g=findhidemaru($$fname);
if(-1!=#g){#g=hidemaruhandle(#g);
while(#g!=hidemaruhandle(0))setactivehidemaru #g;
movetolineno 1,##no; goto tagjump1; } // 自分でも飛べる
else{ tagjump // 新面でまだ中身が詰まっていないことがある。
// 同名の面の統合に時間がかかっている
while(hidemaruhandle(0)==#hwnd){ // 自分の中では飛べない
runsync2 "command.com /c dir";
runsync2 "command.com /c dir";
// Sleep かな?
goto try1; }
if(linecount2==0)goto try1;// 新面 ?
}
tagjump1:
if(#hwnd==hidemaruhandle(0)){menu "ダメじゃん"; } // すっぽ抜け
$ary[#h]=str(hidemaruhandle(0));#h=#h+1;
return;// -------------------------------------------
BACKTAGJUMP:// --------------------------------------
while(#hwnd!=hidemaruhandle(0))setactivehidemaru #hwnd;
$ary[#h]=str(hidemaruhandle(0));#h=#h+1;
return;// -------------------------------------------
main:
#h=0;$ary[#h]=str(hidemaruhandle(0));#h=#h+1;
#l=6; while(#l>0){ #l=#l-1;
call TAGJUMP;
call BACKTAGJUMP;
down;
}
menu str(#h);
gofileend #l=0; while(#l<#h){ insert $ary[#l]+"\n"; #l=#l+1; }
endmacro
__e__
|
|