home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1998 January (DVD)
/
VPR980100.ISO
/
OLS
/
WIN32
/
KAKIMAC
/
KAKIMAC1.LZH
/
GYOUDEL2.MAC
< prev
next >
Wrap
Text File
|
1994-07-07
|
3KB
|
118 lines
//【マクロ名】 gyoudEL2.mac by 水銀水(Suiginsui)小田 明夫 (HDG01603) 94/07/07(木)
//【主な用途】日本語文書作成支援シリーズ・行数算出 でつけた [123] を除く
//【使用対象】清貧にあえぐライター(締切前になると突如住所不定になる習性をお持ち)
// ならびに,印刷所のファックス前に顔面蒼白で立ち尽くす編集者のみなさま(^^;
//【機 能】文章全体の行数を算出する。
// (1)●,■見出行頭に続く [123] を除く
//【使用法】 全文=範囲指定をしていない状態で本マクロを実行。
// 範囲指定=指定部分のみ。
//変数の初期設定
#gc = 0; // GyoutouCharacter 行頭の文字種
#gcb = 0; //GyoutouCharacterBefoer 1行前の行頭状態
//秀丸設定 freecursor ワードラップ停止,禁則処理実施,行末処理はぶら下げに設定する。(後でやろう)
#fc = 0;
if (freecursor){
freecursorswitch;
#fc = 1;
}
if(!selecting){ // no selecting case 従って全範囲を指定
#selyn = 1; //selyn=1なら選択状態になかったため全文選択をした
selectall;
} // if( !selecting )'s end ).
if (selecting){
//範囲の取得
#tlx=seltopx; //tlx:Top_Line_X
#tly=seltopy; //tly:Top_Line_Y
#elx=selendx; //elx:End_Line_X
#ely=selendy; //elx:End_Line_X
// 取得範囲の確認
escape;
if ( #elx != 0)#ely = #ely; // x==0:最後が[eof]だけの行
else #ely = #ely -1;
moveto #tlx,#tly;
while( 1 ) //main start
{
golinetop;
call hanbetu_joutai; //行頭状態判別
#gc = ##return;
if (#gc == 2 )call m_ban_del; //小見出行
if ( y >= #ely ) break;
call c_move;
if ( code == eof ) break;
}
} // 最初のif
call end_fc;
endmacro;
//----------------------------------------------------------------------------------------
hanbetu_joutai:
##gc0 = 0;
if ( code == 13 ){ //空白行(行頭改行)
##gc0 = 1;
}else if (code == '●' || code == '■'){ //見出行の候補と判断された場合
if ( y == 0 ){ ##gc0 = 2;}
else{
left;
if ( code == 13 ){
right;
##gc0 = 2;//本行は見出行である
}else{
right;
##gc0 = 3;//本行は実本文行である
}
}
}else{ //空白行でも見出行でもない
##gc0 = 3; //本行は実本文行である
}
return ##gc0;
c_move: // 処理後のカーソル移動
if (#gcb != 2) down;
else { //●行の時
golineend2; //複数行にわたる見出しに対応(●で始まる行は改行不可)
right; //●共通の2行
}
return;
m_ban_del: //小見出行の●の次に(2)などの番号を挿入する
//消去を伴う処理なので、スピードを犠牲にしてもチェック,●の次が[英数]だったらこれを削除
##xp1 = strstr(gettext(0,y,linelen,y),"["); // [の有無 なし:-1 発見:x
##xp2 = strstr(gettext(0,y,linelen,y),"]"); // ]の有無 なし:-1 発見:x
##xp0 = ##xp2 - ##xp1;
##kkok = 0; // KaKko OKey 0:[123]なしか[あいai]状態=最初から[1]挿入, 1:[123]=括弧内が半角数字だけの置換
if ( ##xp1 == -1 || ##xp2 == -1 || ##xp1 != 2 || ##xp0 <= 1 )//{ // [111]がない
{
##kkoy = 0;
}else{
moveto ##xp1+1,y;
##step = ##xp0;
while(x < ##xp2 )
{
if (code >= 48 && code <= 57 )
{
##kkok = 1;
##step = ##step - 1;
}else{
##kkok = 0;
break;
}
right;
}
}
if ( ##kkok == 1 ){ // [123]
moveto ##xp1,y; //[123] すべてを削除
while (##xp0 >= 0 ){
delete ;
##xp0 = ##xp0 -1;
}
}
golinetop;
return;
end_fc:
if ( #fc == 1) freecursorswitch;
return;