|
山紫水明さん
山紫水明さんに作っていただいたマクロに少し手を加えながら
どういうマクロがいいのか色々と試しています。タグ付けの
部分で修正部分があり、そこを直した後、メニューを増やして
一度マクロを実行したらファイルの最後まで止めないように、
必要かもしれない動きを追加しました。それから主に使う動きは
アルファベットのダイレクトキーじゃなくて、数字のダイレクトキー
に変えました。手のポジションを出来るだけ変えずに作業を
したかったからです。この案がいいかは分かりませんが、マクロ
ファイルを一緒に作業する者にも配って作業を進めるにはこの
方が分かりやすく、作業もしやすいかなぁと思っています。
それから一つ欲を言うと、マクロを実行すると、カーソルが行の頭に
来たときにタグ情報を選択するメニューが出ますよね。あれって
画面の真ん中とかに移動できないでしょうか。行の頭がメニューで
隠れると、そこにどういったタグ情報が入るのか分かりにくいので。
カーソルの付近にメニューが出るのは、秀丸の仕様で、しょうがない
のでしょうか。
//------ InsertTag.mac 040323 ----------------------------------------//
menu "&1 タグの付加",
"&2 修 正";
if( result == 0 ) endmacro;
else if( result == 2 ) goto Revision;
call GetID;
while( 1 ) {
menu "&1 Body <body id=>",
"&2 Division <div id=>",
"&3 Header <head id=>",
"&4 Paragraph <p id=><s id=>",
"***************************",
"&N Next (次行)",
"&R Retern (改行挿入)",
"&D Delete (改行削除)",
"***************************",
"&Z (やり直し)",
"&Q Quit (作業終了)";
if( result == 0 || result == 11 ) break;
else if( result == 1 ) call BodyID;
else if( result == 2 ) call DivID;
else if( result == 3 ) call HeadID;
else if( result == 4 ) call PID;
else if( result == 6 ) movetolineno 1, lineno + 1;
else if( result == 7 ) insertfix "\n";
else if( result == 8 ) deleteline;
else if( result == 10 ) undo;
if( lineno >= linecount2 - 2 ) endmacro;
}
endmacro;
BodyID:
#body = #body + 1;
#body = val(input( "Body Id", str(#body)));
if( #body == 0 ) return;
insert "<body id=" + str(#body) + ">";
gofileend;
insert "</div>\n</body>\n";
prevpos;
movetolineno 1, lineno + 1;
return;
DivID:
#div = #div + 1;
#div = val(input( "Division Id", str(#div)));
if( #div == 0 ) return;
if( #div > 1 ) insert "</div>\n";
insert "<div id=" + str(#body) + "." + str(#div) + ">";
movetolineno 1, lineno + 1;
#pid = 0;
#head = 0;
return;
HeadID:
#head = #head + 1;
#head = val(input( "Header Id", str(#head)));
if( #head == 0 ) return;
insert "<head id=" + str(#body) + "." + str(#div) + ".h"
+ str(#head) + ">";
golineend2;
insert "</head>";
movetolineno 1, lineno + 1;
#pid = 0;
return;
PID:
#pid = #pid + 1;
#pid = val(input( "Paragraph Id", str(#pid)));
if( #pid == 0 ) return;
insert "<p id=" + str(#body) + "." + str(#div) + ".p"
+ str(#pid) + ">";
golinetop2;
searchdown ">";
right;
#sid = 1;
call SID;
return;
SID:
#line = lineno;
while( 1 ) {
insert "<s id=" + str(#body) + "." + str(#div) + ".p"
+ str(#pid) + ".s" + str(#sid) + ">";
searchdown "。";
if ( !result ) endmacro;
if( lineno > #line ) {
golinetop2;
break;
}
right;
if( code == 0x0d ) {
insert "</s></p>";
movetolineno 1, lineno + 1;
break;
} else insert "</s>";
#sid = #sid + 1;
}
return;
Revision:
call ChangeSearchMode;
disabledraw;
if( selecting ) {
escape;
moveto selendx, selendy;
#endline = lineno;
moveto seltopx, seltopy;
} else {
gofiletop;
#endline = linecount2;
}
while( 1 ) {
golinetop2;
#i = 1;
while( 1 ) {
#line = lineno;
searchdown "s[0-9]+", regular;
if( result == 0 ) goto End;
if( lineno > #line ) break;
if( lineno >= #endline ) {
golinetop2;
goto End;
}
insert "s" + str( #i );
#i = #i + 1;
}
}
End:
call RestoreSearchMode;
endmacro;
ChangeSearchMode:
#searchmode = searchmode;
if( !#searchmode ) { //検索状態を変更
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "SelectFound", 1;
envchanged;
}
return;
RestoreSearchMode:
if( !#searchmode ) { //検索状態をもとにもどす
writeregnum "SelectFound", 0;
envchanged;
closereg;
}
return;
GetID:
##x = x; ##y = y;
call ChangeSearchMode;
searchup "p id=[0-9.]+p", regular;
if( !result ) goto GetEnd
moveto selendx, y;
beginsel;
searchdown ">";
#pid = val( gettext( seltopx, seltopy, selendx, selendy ) );
moveto ##x, ##y;
searchup "head id=[0-9.]+h", regular;
moveto selendx, y;
beginsel;
searchdown ">";
#head = val( gettext( seltopx, seltopy, selendx, selendy ) );
moveto ##x, ##y;
searchup "div id=[0-9]+", regular;
moveto selendx, y;
right;
beginsel;
searchdown ">";
#div = val( gettext( seltopx, seltopy, selendx, selendy ) );
moveto ##x, ##y;
searchup "body id=";
moveto selendx, y;
beginsel;
searchdown ">";
#body = val( gettext( seltopx, seltopy, selendx, selendy ) );
GetEnd:
moveto ##x, ##y;
call RestoreSearchMode;
return;
//-------------------------------------------------//
|
|