|
こんばんは。またまたお教え頂きたく投稿させて頂きました。
実は、【秀丸エディタのマクロライブラリ】にありました、
「全角半角大小文字変換マクロ Ver4.4(付マクロ取り消しマクロ) (山紫水明さ
ん) http://hide.maruo.co.jp/lib/macro/zenhandaisho44.html 」
を愛用させて頂いておりましたが、いくつか追加したい文字の変換がありましたので、
山紫水明さんのマクロに他の作者の方の作成したマクロを追加して、希望のマクロを
作成しました。
ところがこの作成したマクロは、続けて何度か使用していると突然動かなくなってし
まうのです。
マクロ初心者で知識もないのに、推測だけで勝手に追加したり、削除したからだと思
うのですが、
どこをどう直したらよいか分かりません。
是非、どのようにしたら動かなくなるということがなくなるかお教え頂けると幸いで
す。
よろしくお願い致します。
このマクロで希望する動きは次の2つです。
(1)文字の全半角の変換(Mojimenu にあるもの)
(2)範囲指定をしない場合は、自動的に全範囲での変換
連続して使用すると動かなくなってしまうマクロは以下の通りです↓↓↓↓↓↓
----------------------------------------------------------------
//オプション
#save = 0; //実行前に保存の確認をする---「1」,しない---「0」
#conf = 0; //最後に確認をする---「1」,確認しない---「0」
if( #save && updated ) {
question "ファイルが更新されています。\nいったん保存しますか?";//★オプ
ション:保存の確認
if( result == yes ) save;
}
if(!selecting)selectall;//全範囲選択
if( rectselecting ) #rectsel = 1;//範囲選択の場合
#bx = seltopx; #by = seltopy;
#ex = selendx; #ey = selendy;
#rs = 1; //選択で範囲の内外の判定フラグ
#ec = 0; //実行回数記録用
Mojimenu:
menu "【全角に変換】",
" ・英字",
" ・数字",
" ・記号",
" ・カタカナ",
" →英数字",
" →すべて全角",
"【半角に変換】",
" ・英字",
" ・数字",
" ・記号",
" ・カタカナ",
" →英数字",
" →すべて半角",
"【英字変換】",
" ・大文字",
" ・小文字",
"【日本語変換】",
" ・ひらがな⇔カタカナ";
#r = result;
escape;
moveto #ex, #ey;
if(#r == 0) endmacro;
else if(#r == 1 ||#r == 8 || #r == 15 #r == 18) goto Mojimenu;
else if(#r == 2) $replace = "[A-Za-z]";
else if(#r == 3) $replace = "[0-9]";
else if(#r == 4) $replace = "[-:;&$!\~ \",.%\'()<>/#・。、「」]";
else if(#r == 5) $replace = "[ヲ-゚ー]";
else if(#r == 6) $replace = "[A-Za-z0-9]";
else if(#r == 7) $replace = "[-:;#$&/()<>!\~ \'\"%・ A-Za-z0-9,.ヲ-゚。、「」]";
else if(#r == 9) $replace = "[A-Za-z]";
else if(#r == 10) $replace = "[0-9]";
else if(#r == 11) $replace = "[、-○!-~,.%・¥”¥’¥()<>/&#$:;]";
else if(#r == 12) $replace = "[ァ-ヶー゛゜]";
else if(#r == 13) $replace = "[A-Za-z0-9]";
else if(#r == 14) $replace = "[:;$/&#()<>¥”¥’%・¥、-○!-~A-
Za-z0-9,.ァ-ヶー゛゜]";
else if(#r == 16) $replace = "[a-za-z]";
else if(#r == 17) $replace = "[A-ZA-Z]";
if( #r == 16 ) call ToCapital;
else if( #r == 17 ) call ToSmall;
else if( #r == 19 ) call Tozenkakukata;
else if( #r > 1 && #r < 8 ) call ToZenkaku;
else if( #r > 8 && #r <= 14 ) call ToHankaku;
escape;
moveto #ex, #ey;
redraw;
call Reset_search;
enabledraw;
if( #conf ) {
question "確定しますか?";//★オプション:保存の確認
if( !result ) {
disabledraw;
while( #ec ) {
undo;
#ec = #ec - 1;
}
enabledraw;
}
}
//実行結果をクリップボードに記録(Undo用)
setclipboard "ZenhanDaisho.mac" + "\x0d\x0a";
addclipboard str(#ec);
endmacro;
ToCapital:
while(1){
searchup $replace, regular;//
if( result == 0 || y < #by || (y == #by && x < #bx) ) break;
if( #rectsel ) call RectSel;
if( #rs ) toupper;
#ec = #ec + 1;
escape;
}
return;
ToSmall:
while(1){
searchup $replace, regular;//
if( result == 0 || y < #by || (y == #by && x < #bx) ) break;
if( #rectsel ) call RectSel;
if( #rs ) tolower;
#ec = #ec + 1;
escape;
}
return;
ToZenkaku:
while(1){
searchup $replace, regular;
if( result == 0 || y < #by || (y == #by && x < #bx) ) break;
if( #rectsel ) call RectSel;
if( #rs && ( code == '゙' || code == '゚' ) ) { //併せて1字として扱う
escape; left; beginsel; right; right;
}
if( #rs ) tozenkakukata;
#ec = #ec + 1;
escape;
}
return;
ToHankaku:
while(1){
searchup $replace, regular;//
if( result == 0 || y < #by || (y == #by && x < #bx) ) break;
if( #rectsel ) call RectSel;
if( #rs ) tohankaku;
#ec = #ec + 1;
escape;
}
return;
Tozenkakukata:
if(!selecting)selectall;
#x1 = seltopx;
#y1 = seltopy;
#x2 = selendx;
#y2 = selendy;
moveto #x1, #y1;
while ( (#x1 != #x2) || (#y1 != #y2) )
{
escape;
beginsel;
#c = code;
right;
#x1 = x;
#y1 = y;
if ((0x829F <= #c) && (#c <= 0x82F1))// ぁ〜ん
{
tozenkakukata;
}
else if ((0x8340 <= #c) && (#c <= 0x8393))// ァ〜ン
{
tozenkakuhira;
}
}
escape;
RectSel:
if( x >= #bx && x < #ex ) #rs = 1;
else #rs = 0;
return;
Save_search: //検索状態を保存・変更
$sb = searchbuffer;
#so = searchoption;
if ( !searchmode ) { // 検索状態を範囲選択に変更
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "SelectFound",1;
#modechange = 1;
envchanged;
closereg;
}
return;
Reset_search: //検索状態を元に戻す
if ( #modechange ) {
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "SelectFound",#s_mode;
envchanged;
closereg;
}
setsearch $sb, #so;
return;
----------------------------------------------------------------
|
|