|
>F4キーの機能は、行がずれてもちゃんとサーチしてくれたので、
>便利だなと思ってました。
完璧なものはできません。
// はじまり、
escape; disabledraw;
##cx = x; ##cy = y;
$$sb = searchbuffer; ##so = searchoption;
call moveToErrLine;
if( ##return ){
escape; golinetop2;
setsearch $$sb, ##so;
enabledraw y - (windowheight / 2);
endmacro;
}
escape; moveto ##cx, ##cy;
setsearch $$sb, ##so; beep;
endmacro;
// さぶ
moveToErrLine:
golinetop2; ##lineno = lineno;
beginsel;
searchdown "\\([0-9]+\\): ", regular;
if( (result==0) || (lineno!=##lineno) ) return 0;
$$file = gettext( seltopx, seltopy, selendx, selendy );
escape; moveto selendx, selendy;
searchdown "[0-9]+", regular;
$$errlineno = gettext( seltopx, seltopy, selendx, selendy );
// $$line にタブ以外の文字を入れる。
searchdown "\\<[^\\t\\n]+",regular;// 適当に変えて。
if( (result==0) || (lineno!=##lineno) ) return 0;
$$line = gettext( seltopx, seltopy, selendx, selendy );
escape;
##errlineno = val($$errlineno);
if( strstr($$file,":") != -1 ) $$current = filename2;
else $$current = basename2;
if( $$file != $$current ){
##f = findhidemaru( $$file );
if( ##f != -1 ) setactivehidemaru hidemaruhandle(##f);
else openfile "\"" + $$file + "\"";// /j 不可
disabledraw;
}
if( ##errlineno < linecount2 ) movetolineno 1, ##errlineno + 1;
else gofileend;
// 何バイト有効か不明
if( strlen($$line) > 80 ) $$line = leftstr($$line,80);
searchup $$line, casesense;
if( result ) return 1;
finddown;
if( ! result ){
if( ##errlineno < linecount2 ) movetolineno 1, ##errlineno;
// ファイル開いちゃったので ##return == 1
}
return 1;
// おしまい。
あくまで、代替マクロです。
VC++のエディタ風にするなら、
Shift + F4, Shift + Ctrl + F4
に割り当てて下さい。
または、秀丸標準キー割当て風なら、
Shift + F10, Shift + Ctrl + F10
に割り当てて下さい。
ではでは。
|
|