disabledraw; call margeLine; call isFileEnd; while (##return == false){ call margeLine; call isFileEnd; } enabledraw; endmacro; //行途中で改行された目次文字列から改行を削除する。 margeLine: call isLineTopNum; if( ##return ){ call isLineEndNum; if( ##return ){ //行の先頭と最後が数値の場合、何もしない。 }else{ //行の先頭が数値で、文字の最後が文字の場合、 //次の行が先頭が文字で最後が数値なら //行を追加する。 down; call isLineTopNum; if( ##return == false){ call isLineEndNum; if( ##return ){ golinetop; backspace; } } } }else{ //行の先頭が文字の場合、行を削除する。 deleteline; } //次の行に移動する。 down; return; //行の先頭が数値か判定するサブルーチン isLineTopNum: //行の先頭に移動する。 golinetop; //文字が数値だった場合,trueを返す。 call isNum; return ##return; //行の最後が数値化判定するサブルーチン isLineEndNum: //行の最後に移動する。 golineend; //行の最後の文字に移動する。 left; //文字が数値か判断する。 call isNum; return ##return; //カーソル位置の文字が数値化判定するサブルーチン isNum: if(code >= 30 && code < 0x39){ #r = true; }else{ #r = false; } return #r; //現在位置がファイルの最終行か判定するサブルーチン //行の移動はしない。 isFileEnd: #currentline = y; gofileend; #endline = y; moveto 0,#currentline; if(#currentline == #endline){ #r = true; }else{ #r = false; } return #r;