|
こんな感じです。まートモな、マクロにしました。
マクロが肥える秋、でも誰が使うのやら ...
そのうちに削除します。
//*5 KZ_SelConv1.mac - 1999/10/12 - K.Nakatake
//*1 【マクロ名】 KZ_SelConv1.mac - Ver. 00.07 - 1999/10/12
//*1 BOX 範囲選択、範囲選択して、マクロを実行してください。<== お勧めです !
//*1 空白 ==> タブ、タブ ==> 空白 の変換は、行単位の範囲選択をして、マク
ロを実行してください。
//*1 やり直し (UnDo-7) は、無条件に、無条件に UnDo を 7 回、行います !
//*1 でも、UnDo を失敗したり、「ファイルの更新」がなくなると、やめま
すです !
//*1 やり直し (UnDo-7) は、 BOX 範囲選択、範囲選択されているとできません。
//*1 やり直し (UnDo-7) は、「ファイルが更新」されていないとできません。
//*1 編集のやり直し (Reopen) も、やり直し (UnDo-7) と同じ制限があります。
//*1 BOX 範囲選択は、マクロ実行後でも指定できます。
//*1 [Esc] で処理を中止してください。
//*1 BOX 範囲選択の変換は、タブ [Tab] があるとあまりうまくいきません !
if( rectselecting || selecting ){
#xt = seltopx; #yt = seltopy; #xe = selendx; #ye = selendy;
} else {
#xt = x; #yt = y;
}
$tbl_menu1[00] = "【 範囲選択しての変換処理 】";
if( rectselecting ){
$tbl_menu1[00] = $tbl_menu1[00] + " : BOX 範囲選択がされています";
} else if( selecting ){
$tbl_menu1[00] = $tbl_menu1[00] + " : 範囲選択がされています";
} else {
$tbl_menu1[00] = $tbl_menu1[00] + " : 後で BOX 範囲選択をしてください";
}
$tbl_menu1[01] = "(&U) - 半角英大文字 (toUpper)";
$tbl_menu1[02] = "(&L) - 半角英小文字 (toLower)";
$tbl_menu1[03] = "(&H) - 半角 (toHankaku)"; // うまくいかないかも !
$tbl_menu1[04] = "(&Z) - 全角カタカナ (toZenkakukata)"; // うまくいかな
いかも !
$tbl_menu1[05] = "(&A) - 全角ひらがな (tozenkakuhirA)"; // うまくいかな
いかも !
if( selecting && ( ! rectselecting ) && (seltopx+selendx) == 0 ){
$tbl_menu1[06] = "(&T) - 空白 ==> タブ (toTab) 行単位の範囲選択のみ";
$tbl_menu1[07] = "(&S) - タブ ==> 空白 (toSpace) 行単位の範囲選択のみ";
}
$tbl_menu1[08] = "(&7) - やり直し (UnDo-7)"; // UnDo を 7 回実行する !
$tbl_menu1[09] = "(&R) - 編集のやり直し (Reopen)"; // UnDo はできなく
なります !
#tbl_menu1 = 09 + 1;
if( rectselecting || selecting || ( ! updated ) ){
#tbl_menu1 = #tbl_menu1 - 2;
if( $tbl_menu1[06] == "" ){
#tbl_menu1 = #tbl_menu1 - 2;
}
}
menuarray $tbl_menu1, #tbl_menu1;
#result = result - 1;
if( #result < 01 ){ endmacro; } // [Esc] で終わり !
if( $tbl_menu1[#result] == "" ){ endmacro; }
if( #result == 08 || #result == 09 ){
if( rectselecting || selecting ){ endmacro; } // 範囲選択され
ていない !
if( ! updated ){ endmacro; } // ファイルは変更されていない !
escape; disabledraw; disableinvert;
if( #result == 08 ){
#i = 7;
while( #i ){
undo;
if( ( ! result ) || ( ! updated ) ){
break;
}
#i = #i - 1;
}
moveto #xt, #yt;
} else {
reopen;
}
endmacro;
}
if( #result == 06 || #result == 07 ){
if ( ( ! selecting) || (seltopx+selendx) != 0 ){
message "この変換は、行単位の範囲選択をして実行してください !";
escape; moveto #xt, #yt;
endmacro;
}
}
if( rectselecting || selecting ){
} else {
// message "BOX 範囲選択をしてマクロを実行してください !";
// endmacro;
escape;
$wk1 = midstr($tbl_menu1[#result],6,99) + " - ";
inputpos $wk1 + "BOX 範囲選択の開始位置を指定してください ! - [Esc]
: キャンセル";
if( iskeydown( 0x1B ) ){ // [Esc]
escape; endmacro;
}
beginrect;
inputpos $wk1 + "次に、BOX 範囲選択の終了位置を指定してください ! -
[Esc] : キャンセル";
if( iskeydown( 0x1B ) ){ // [Esc]
escape; endmacro;
}
#xt = seltopx; #yt = seltopy; #xe = selendx; #ye = selendy;
}
if( ( ! rectselecting ) && ( ! selecting ) ){ escape; endmacro; }
if( #xt == #xe && #yt == #ye ){ escape; endmacro; }
disabledraw; disableinvert;
#sw_rect = rectselecting;
cut;
#freecursor = freecursor;
if( ! #freecursor ){ config "r+"; } // とりあえず freecursor !
gofileend;
if( x != 0 ){ insertreturn; } // ファイルの最後は改行 !
#x = x; #y = y;
paste;
moveto #x, #y;
beginsel; gofileend;
if( #result == 01 ){
toupper;
} else if( #result == 02 ){
tolower;
} else if( #result == 03 ){
tohankaku;
} else if( #result == 04 ){
tozenkakukata;
//T replaceallfast "\\t", "\\t\\t", regular, inselect; // [Tab]
//T setsearch "", 0x00;
} else if( #result == 05 ){
tozenkakuhira;
} else if( #result == 06 ){
totab;
} else if( #result == 07 ){
tospace;
} else {
}
escape;
if( #sw_rect ){
insertreturn; moveto #x, #y; beginrect;
#i = #x-#xt+#xe;
if( #result == 01 || #result == 02 ){
} else if( #result == 03 ){
#i = #i; // #i / 2; // 必ずしもそうでは無い !
} else if( #result == 04 || #result == 05 ){
#i = #i * 2; // まァ、とりあえず !
} else if( #result == 06 || #result == 07 ){
#i = #i; // まァ、とりあえず !
} else {
}
moveto #i, #y-#yt+#ye;
cut; moveto #x, #y; beginsel; gofileend; delete;
moveto #xt, #yt;
pasterect; // 処理がおかしくなったら、paste; で置き換えてください !
// paste; // こちらのほうが、安定するみたいです !
} else {
moveto #x, #y;
beginsel; gofileend;
cut;
insertfix "#"; delete; // dummy for UnDo-7
moveto #xt, #yt;
paste;
}
moveto #xt, #yt;
if( ! #freecursor ){ config "r-"; }
endmacro;
// end of macro.
|
|