2013年01月28日

EmEditor・DPC-100用 行番号追加マクロ

 この記事も含めて、まとめはこちらLink


 iPhoneのポケコンアプリ、DPC-100でプログラムを作る時、パソコンのテキストエディタでリストを作成、iTunesからiPhoneに転送していたが、ここで行番号を新しく入れ直す、BASICの「RENUM」に相当するものがPCでできないかと思い、使用しているEmEditor用マクロとして作ってみた。
 だから、この記事は「EmEditor用マクロ・DPC-100用RENUM」という、ややこしいものになっている。

 ちなみに、PCとDPC-100間のプログラム転送方法は、DPC-100『LOAD』の項目参照。

EmEditor・行番号追加マクロ
// 行番号追加マクロ
Start = 110; // 開始行番号
Step = 10; // 行増数
SWord = "^ *[0-9]+ "; // 検索ワード
if ( document.selection.IsEmpty ) { // 範囲指定無しの場合
document.selection.Replace
( SWord , "" , eeReplaceAll |
eeFindReplaceRegExp ); // 行番号削除
YStart = 1 // 開始行
document.selection.
EndOfDocument(false) ; // 最下段移動
YEnd = document.selection.GetActivePointY
( eePosLogical ); // 最下行数取得
} else { // 範囲指定有りの場合
document.selection.Replace
( SWord , "" , eeReplaceAll | eeFindReplaceRegExp |
eeReplaceSelOnly ); // 行番号削除
YStart = document.selection.GetTopPointY
( eePosLogical ); // 開始行
YEnd = document.selection.GetBottomPointY
( eePosLogical ); // 最終行
}
document.HighlightFind=false; // 検索強調解除
for( Y = 0; Y < YEnd - YStart; Y++) { // 最下段までループ
document.selection.SetActivePoint( eePosLogical ,
1 , Y + YStart , false ); // 移動
document.selection.Text
= " " + (Start + Y * Step) + " "; // 行番号追加
}
document.selection.SetActivePoint( eePosLogical ,
1 , YStart , false ); // 先頭に移動

 以前作成したリストを使って、
50 LOOP:
30 X=(TOUCH(0,0)+480)/50
IF X==X2 GOTO LOOP
350 PRINT FILLSTR(0,X,'-'),
000 X2=X
60 GOTO LOOP
 このように、行番号どころか桁もバラバラ、先頭にスペースがあるものも無いものも、000など適当な数字や行番号すら無いものを含めたリストでマクロを実行すると、
  110 LOOP:
120 X=(TOUCH(0,0)+480)/50
130 IF X==X2 GOTO LOOP
140 PRINT FILLSTR(0,X,'-'),
150 X2=X
160 GOTO LOOP
 こんな感じで整列される。
 範囲指定(行単位で指定)された状態で実行するとその範囲のみ、範囲指定が無いと文書全体に行番号を入れる。

 処理としては、まず行の先頭にある「1桁以上の数字」と「1文字のスペース」を全て削除してから、各行に数字を追加するというもの。
 また、マクロの先頭に記載されている「Start」「Step」を変更すれば、開始行と増数をの変更も可能。

 EmEditorでDPC-100用プログラムを書いていると、結構使えると思う。



タグ:DPC-100 EmEditor

posted by 司隆 at 20:58 | Comment(0) | Computer
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。