|
● save.mac ( くどい版 )
// 拡張子を、フォルダより優先する。
disablebreak; disabledraw; // 「マクロ動作中」を強調。
if( basename == "" ){ save; endmacro; }
call getCharSet; $$CS = $$return;
// 拡張子 $$S[0][##i] のファイルは、$$S[1][##i] で保存する。
$$S[0][0] = ".html"; $$S[1][0] = "JIS LF";
$$S[0][1] = ".htm"; $$S[1][1] = "JIS LF";
$$S[0][2] = ".pl"; $$S[1][2] = "EUC LF";
$$S[0][3] = ".java"; $$S[1][3] = "UNICODE CR LF";
##size = 4;
while( ##i < ##size ){
##len = strlen($$S[0][##i]);
if( rightstr(basename,##len) == $$S[1][##i] ) break;
##i = ##i + 1;
}
if( ##i < ##size ){
if( $$CS != $$S[1][##i] ){
if( ##i <= 1 ) saveas filename2, jis, lf;
else if( ##i == 2 ) saveas filename2, euc, lf;
else if( ##i == 3 ) saveas filename2, unicode;
endmacro;
}
}
// フォルダ $$S[0][##i] 以下にあるファイルは $$S[1][##i] で保存する。
$$S[0][0] = "J:\\jis\\"; $$S[1][0] = "JIS LF";
$$S[0][1] = "E:\\euc\\"; $$S[1][1] = "EUC LF";
$$S[0][2] = "U:\\uni\\"; $$S[1][2] = "UNICODE CR LF";
##size = 3;
##i = 0;
while( ##i < ##size ){
if( strstr(filename2,$$S[0][##i]) == 0 ) break;
##i = ##i + 1;
}
if( ##i == ##size ) save;
else if( $$CS == $$S[1][##i] ) save;
else if( ##i == 0 ) saveas filename2, jis, lf;
else if( ##i == 1 ) saveas filename2, euc, lf;
else if( ##i == 2 ) saveas filename2, unicode;
endmacro;
getCharSet:
##c = charset & 63; // ヘルプの記述通り。しかし & 0x07 で十分なような。
if( ##c <= 1 ) $$c = "SJIS ";
else if( ##c == 2 ) $$c = "UNICODE ";
else if( ##c == 3 ) $$c = "EUC ";
else $$c = "JIS ";
##c = charset & 0xc0;
if( ##c == 0x40 ) $$c = $$c + "LF";
else if( ##c == 0x80 ) $$c = $$c + "CR";
else $$c = $$c + "CR LF";
return $$c;
// おしまい。
(1)UTF-7, UTF-8 の判定方法なし。
(2)メニューでは、"SHIFT-JIS (改行=CR)" があるけど、
現状ではマクロ側から保存できない。
(3)マクロじゃ遅そう。(^^;)
(4)テストしていません。m(__)m
● save.mac ( 別観点版 )
if( basename != "" ){ save; endmacro; }
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
$$edir = getregstr("EucDrives");
closereg;
if( rightstr($$edir,1) != "\\" ) $$edir = $$edir + "\\";
$$wdir = directory2;
if( rightstr($$wdir,1) != "\\" ) $$wdir = $$wdir + "\\";
if( strstr($$wdir,$$edir) != 0 ){ SAVEAS; endmacro; }
saveas $$wdir + "euc.tmp", euc, lf;
changename "";
SAVEAS; // 拡張子を明示しないと、.tmp になります。
endmacro;
// おしまい。
ではでは。
|
|