home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 November
/
VPR9711A.ISO
/
VPR_DATA
/
Special
/
Inyoupa5
/
inyoupa5.lzh
/
INYOU_PA.MAC
< prev
next >
Wrap
Text File
|
1997-03-30
|
7KB
|
348 lines
// 引用符付き貼り付け INYOU_PA.MAC ver.5.00
// by JRくん(GFB03426) 1997.3.31
// 【御礼】
// FWINAL MES 8 #00718 あじゃぱ 氏作 inyou.mac を参考とさせて頂きました。
// この場を借りて御礼申し上げます。
disableinvert;
if (readonly) {
message "「上書き禁止」なので実行を中止します。";
endmacro;
}
if (browsemode) {
message "「閲覧モード」なので実行を中止します。";
endmacro;
}
if (rectselecting) {
message "BOX範囲選択中は実行できません。";
endmacro;
}
// 引用符を取得
$inyoufuini = getinistr("HIDEMARU.INI", "Env", "RefMark");
$inyoufu = midstr($inyoufuini, 1, strlen($inyoufuini) - 2);
#inyoufuLen = strlen($inyoufu);
// INIファイルを取得
$INIdir = getinistr("HIDEMARU.INI", "Env", "MacroPath");
if ($INIdir == "") $INIdir = hidemarudir;
$INIfile = $INIdir+"\\INYOU_PA.INI";
// 各種設定を取得
// 改行位置変更機能(簡易整形)を使用するかどうか
#SEIKEIexecute =getininum($INIfile,"Env","SEIKEIexecute");
// 折り返す文字数
#TmpOrikaesiNum =getininum($INIfile,"Env","OrikaesiNum");
// 禁則処理をするかどうか
#Kinsoku =getininum($INIfile,"Env","Kinsoku");
// 顔文字ラップをするかどうか
#KAOMOJIwrap =getininum($INIfile,"Env","KAOMOJIwrap");
// 「顔文字ラップ」の項目数
#NumberOfKAOMOJI =getininum($INIfile,"KAOMOJIwrap","NumberOfKAOMOJI");
// 「顔文字ラップ」項目
#n = 1;
while (#n <= #NumberOfKAOMOJI) {
$KAO[#n] = getinistr($INIfile,"KAOMOJIwrap",str(#n));
#n = #n + 1;
}
// 「顔文字ラップ」時の、右端をはみ出す最大文字数
#KAOMOJIwrapMax =getininum($INIfile,"Env","KAOMOJIwrapMax");
// 整形途中を表示しないかどうか(1:表示しない, 0:表示する)
#DisableDraw =getininum($INIfile,"Env","DisableDraw");
// 改行位置変更時のメッセージ
$changecolumn =getinistr($INIfile,"Env","changecolumn");
// 顔文字ラップ時の禁則処理用
$TKin = getinistr("HIDEMARU.INI", "Env", "TKin");
// 初期処理
// 折り返し文字数の設定
if (#TmpOrikaesiNum <= 0) {
#OrikaesiNum = width + #TmpOrikaesiNum;
} else {
#OrikaesiNum = #TmpOrikaesiNum;
}
// 「顔文字」の長さ、ふるい分け用文字列を取得
if (#KAOMOJIwrap) {
#a = 1;
$KAOMOJIArray = "";
while (#a <= #NumberOfKAOMOJI) {
#KAO[#a] = strlen($KAO[#a]);
$KAOMOJIArray =$KAOMOJIArray + $KAO[#a];
#a = #a + 1;
}
} else {
$KAOMOJIArray = "\n"; //←顔文字ラップしないためのダミー
}
// 自動インデント を 一時的に 無し にする
#indentstate = indentstate;
if (#indentstate != 0) {
config "i0";
}
// 上書きモードの場合は、一時的に挿入モードにする
#overwrite = overwrite;
if( #overwrite ) overwriteswitch;
if (selecting) delete;
if (column != 0) insertreturn;
// 禁則処理の設定
#KinsokuChange = no;
if (#Kinsoku != -1) {
#prevKinsoku = kinsokustate;
if (#Kinsoku != #prevKinsoku) {
#KinsokuChange = yes;
if (#Kinsoku == yes) {
config "k+";
#KinsokuExecute = yes;
} else {
config "k-";
#KinsokuExecute = no;
}
}
}
#changecolumn = no;
beginclipboardread;
// 整形 on ・禁則処理 on 時
if ((#SEIKEIexecute) && (#KinsokuExecute)) {
// ウィンドウを自動的に小さくする を 一時的に off にする
#AutoShrink = getininum("HIDEMARU.INI", "Env", "AutoShrink");
if (#AutoShrink) {
writeininum "HIDEMARU.INI", "Env", "AutoShrink", no;
envchanged;
}
// 折り返し文字数の設定
#prevOrikaesiNum = width;
config "w" + str(#OrikaesiNum);
if (#DisableDraw) disabledraw;
// メインループ
$c = getclipboard;
while ($c != "") {
insert $c;
if (column != 0) insertreturn;
// タブ -> スペース変換
up;
selectline;
tospace;
escape;
NormalLineLoop:
insert $inyoufu;
golineend;
if (code == 0x0d) {
down;
golinetop2;
} else {
right;
if (strstr($KAOMOJIArray, char(code)) != -1) call KAOMOJIwrap;
if (code == 0x0d) {
down;
golinetop2;
} else {
insertreturn;
#changecolumn = yes;
goto NormalLineLoop;
}
}
$c = getclipboard;
}
config "w" + str(#prevOrikaesiNum);
// 整形 on ・禁則処理 off 時
} else if ((#SEIKEIexecute) && (#KinsokuExecute == no)) {
if (#DisableDraw) disabledraw;
$c = getclipboard;
while ($c != "") {
// 与えられた文字列の中から1表示行分だけ表示
insert $c;
if (column != 0) insertreturn;
// タブ -> スペース変換
up;
selectline;
tospace;
escape;
insert $inyoufu;
InsertInyoufuLoop2:
// 整形の実行
if (linelen2 > #OrikaesiNum) {
movetolineno #OrikaesiNum + 1, lineno;
if (strstr($KAOMOJIArray, char(code)) != -1) call KAOMOJIwrap;
if (code != 0x0d) {
insertreturn;
insert $inyoufu;
#changecolumn = yes;
goto InsertInyoufuLoop2;
}
}
// 次の行に移動
golineend2;
down;
golinetop2;
$c = getclipboard;
}
// 整形 off 時
} else {
if (#DisableDraw) disabledraw;
$c = getclipboard;
while ($c != "") {
// 与えられた文字列の中から1表示行分だけ表示
insert $c;
if (column != 0) insertreturn;
// タブ -> スペース変換
up;
selectline;
tospace;
escape;
insert $inyoufu;
// 次の行に移動
golineend2;
down;
golinetop2;
$c = getclipboard;
}
}
// 終了処理
MacroEnd:
if (#KinsokuChange) {
if (#prevKinsoku) {
config "k+";
} else {
config "k-";
}
}
if (#AutoShrink) {
writeininum "HIDEMARU.INI", "Env", "AutoShrink", yes;
envchanged;
}
// 改行位置変更時のフッター処理
if ((#changecolumn) * ($changecolumn != "")) {
insert $changecolumn + "\n";
}
if (#DisableDraw) enabledraw;
if (#indentstate == 1) {
config "i1";
} else if (#indentstate == 3) {
config "i2";
} else if (#indentstate == 5) {
config "i3";
} else if (#indentstate == 7) {
config "i4";
}
if( #overwrite ) overwriteswitch;
enableinvert;
endmacro;
// 顔文字ラップ
KAOMOJIwrap:
#xx = column + 1; #yy = lineno;
#n = 1;
while (#n <= #NumberOfKAOMOJI) {
#xxx = #xx - #KAO[#n] + 1;
if (#xxx < 1) #xxx = 1;
movetolineno #xxx, #yy;
left;
#clm = column;
beginsel;
golineend2;
$LINE = gettext(seltopx, seltopy, selendx, selendy);
escape;
movetolineno #xx, #yy;
#KAOMOJIx = strstr($LINE, $KAO[#n]);
if ((#KAOMOJIx != -1) &&
((#clm + #KAOMOJIx) >= (#xx - #KAO[#n] )) &&
((#clm + #KAOMOJIx) <= (#xx + #KAO[#n] - 1))) {
#xend = #clm + 1 + #KAOMOJIx + #KAO[#n];
if (#xend <= (#OrikaesiNum + #KAOMOJIwrapMax + 1)) {
movetolineno #xend, #yy;
if (kinsokustate) {
if(strstr($TKin,char(code))!=-1) right;
}
break;
} else {
movetolineno #clm + 1 + #KAOMOJIx, #yy;
break;
}
}
#n = #n + 1;
}
return;