dl・dt/ddタグで整形する秀丸マクロを作る

id:marubontwitter
【募集中】秀丸マクロで定義リストを一気にマークアップする方法
完成させたと思ったら間違いだっt @ashitano さんならきっと作ってくれr
とか言ってやがったのでカクテルパートナーで酔った頭で作ってみた。10分くらいで作った

諸注意

あとで
アシタノマクロでバグが出てるので修正ちゅうv
とか言ってたので何が不具合だったか聞いてみようていうかまるぼんは後でこっそり俺に教えるように。
適当に作りすぎてマクロ正常動作させるための条件(反転範囲はこうでないといけない、とか)がガチガチなんでしょう。

動作

aaaaa
BBBBBBB
c
DDDDD

↑こんなテキストで「aaaaa」〜「DDDDD」の行を選択し、マクロ起動で↓こんなんに変換する

<dl>
<dt>aaaaa</dt>
<dd>BBBBBBB</dd>
<dt>c</dt>
<dd>DDDDD</dd>
</dl>

ソース

	if(selecting == 0){
		message "編集範囲が選択されていません";
		endmacro;
	}
	escape;
	#ddflg = 0;
	moveto seltopx,seltopy;
	while(y < selendy)
	{
		if(#ddflg % 2 == 0)
		{
			$tag    = "<dt>";
			$tagend = "</dt>";
		}
		else
		{
			$tag    = "<dd>";
			$tagend = "</dd>";
		}
		golineend;
		insert $tagend;
		golinetop;
		insert $tag;
		down;
		#ddflg = #ddflg + 1;
	}
	moveto selendx,selendy;
	insert "</dl>";
	moveto seltopx,seltopy;
	insert "<dl>\n";
	endmacro;

改変ネタ

  • Ctrl+zで戻るときにまとめて戻ってくれないとか
  • 空行はタグ挿入の対象にしないとか
  • マクロ起動したときに1アクションずつエディタが再描画されるのでこれを抑止するとか