2010.04.22

秀丸「マークアップ用」マクロと、アウトライン機能のカスタマイズ

20111023-現在この方法では編集してないので意味なし。
秀丸マクロの途中経過ということでメモ。

はじめに

アウトラインエディタで記事作成

秀丸でのアウトライン解析を【なるべく】活かしてマークアップした文章に

労を少なくしてブログなりWebページなりを作る。

…という目的を達成するために、秀丸マクロをカスタマイズする。

まずは偉大な元マクロ制作者さんのサイト
○LINK:hail2u.net – Weblog – HTMLマークアップ秀丸マクロ for blosxom

http://hail2u.net/blog/coding/html_markup_hidemarumacro_for_blosxom.html

すばらしい。じゃこれを自分が使っているアウトラインの仕様にあわせてカスタマイズします。
仕様随時カスタマイズ中だけどキリがないので一旦まとめておく。

自分用の設定

変換ルール

使用前 → マクロ処理後
HTML特殊文字(&,",<,>,') → 実体参照(&amp; &quot; &lt; &gt; &#39;)に
行頭に■ → <h4>
行頭に□ → <h5>
行頭に「・」(黒点) → <h6>
行頭にタブ + 「・」 → <h7>
行頭にタブ + タブ + 「・」 → <h8>
行頭にタブ + タブ + タブ + 「・」 → <h9>
行頭に# → 画像挿入。タブで区切ってalt、width、heightを指定可能
行頭に-(ハイフン) → <ul>開始、以降-が途切れるまで<li>を挿入
行頭に+ → <ol>開始、以降+が途切れるまで<li>を挿入
行頭に:(コロン) → <dl>開始、以降途切れるまで<dt>を挿入。同じ行の2番目に出てくる「:」以降を<dd>に
行頭に半角空白 → 途切れるまで<pre>で囲む
通常 → wordpressは勝手に<p>で囲んでくれるし、一覧性が高いのでプレーンテキストのまま

秀丸のアウトライン解析設定

LV1 ■(変換「し」 → h4
LV2 □(変換「ろし」 → h5
LV3 ・ → h6(以降インデントの深さでレベルを決める

参考:
○LINK:むらログ: 秀丸エディターのアウトライン機能

http://mongolia.seesaa.net/article/40734068.html

マクロの書き換え

【秀丸マクロ】
(48行目付近)
	if (code == 0x2A) {
		right;

		if (code == 0x2A) {
			right;

			if (code == 0x2A) {
				backspace;
				backspace;
				delete;
				insert "<h6>";
				golineend2;
				insert "</h6>";
			} else {
				backspace;
				backspace;
				insert "<h5>";
				golineend2;
				insert "</h5>";
			}
		} else {
			backspace;
			insert "<h4>";
			golineend2;
			insert "</h4>";
		}
(60行目付近)
	} else if (code == 0x09) {
		delete;
		insert "<blockquote cite=\"\">\n<p>";
		#elNo = #elNo + 1;
		golineend2;
		insert "</p>\n</blockquote>";
		#elNo = #elNo + 1;

	(193行目付近)
	} else {
		insert "<p>";
		golineend2;
		insert "</p>";
	}

ここを書き換え


	【秀丸マクロ】
	(48行目付近)
		if (code == 0x81A1) {			//h4 ■
			right;
			backspace;
			insert "<h4>";
			golineend2;
			insert "</h4>";

		} else if (code == 0x81A0) {	//h5 □
			right;
			backspace;
			insert "<h5>";
			golineend2;
			insert "</h5>";

	////////////////////////h6以降のタブと・のマークアップ

 	} else if (code == 0x8145) {	//h6 ・
		right;
		backspace;
		insert "<h6>";
		golineend2;
		insert "</h6>";

	} else if (code == 0x09) {				//行頭にタブがある。
		right;								//カーソルを右に移動
		if (code == 0x8145) {				//「・」をチェック
			insert "<h6 class=\"h7\">";
			golineend2;
			insert "</h6>";
		} else if (code == 0x09){			//「・」がなかった場合、さらにタブチェック=2個目
			right;
			if (code == 0x8145) {				//「・」をチェック
				insert "<h6 class=\"h8\">";
				golineend2;
				insert "</h6>";
			} else if (code == 0x09){			//「・」がなかった場合、さらにタブチェック=3個目
				right;
				if (code == 0x8145) {				//「・」をチェック
					insert "<h6 class=\"h9\">";
					golineend2;
					insert "</h6>";
				} else if (code == 0x09){			//「・」がなかった場合、さらにタブチェック=4個目
						insert "";
						golineend2;
						insert "";
				}
			}
		}

	/////////////////////////

	(60行目付近)
		} else if (code == 0x8184) {
			delete;
			insert "<blockquote cite=\"\">\n<p>";
			#elNo = #elNo + 1;
			golineend2;
			insert "</p>\n</blockquote>";
			#elNo = #elNo + 1;

	(193行目付近)
	} else {
		insert "";
		golineend2;
		insert "";
	}

このように書き換え。

動作確認

【マクロテスト】
・h6用のレベル
	・h7用のレベル
		・h8用のレベル
			・h9用のレベルテスト
				・h10用のレベルテスト
					・11用のレベルテスト
>引用テスト

【マクロ動作後】
<h6>h6用のレベル</h6>
	<h6 class="h7">・h7用のレベル</h6>
		<h6 class="h8">・h8用のレベル</h6>
			<h6 class="h9">・h9用のレベルテスト</h6>
				・h10用のレベルテスト
					・11用のレベルテスト
<blockquote cite="">
<p>引用テスト</p>
</blockquote>

※前後に改行がないとうまく効かないみたい。

秀丸マクロカスタマイズのための備忘録

参考:
○LINK:秀丸マクロの使い方:秀丸マクロのレストラン

http://hidemacro.gtx.jp/help/howto.htm

書き換えのための命令
right;は「カーソルを右に」
insert "<h6>";で文字を挿入

もちろんこれだけではマクロが作れるわけないけど、目的は達したのであとはおいおい。

文字コードを書き換える

検索する文字は文字コードで指定する。

code    カーソル位置の文字コードを表します。 2バイト文字の場合は2バイトのコードを返します。例えば全角空白の場合は0×8140になります。 フリーカーソルモードの時に、カーソルが改行文字より後ろに位置する場合はcodeの値は0になります。 改行文字の上の場合は0x0Dになります。(改行コードがCR/LF/CR+LFのいずれであっても0x0Dになります) ファイルの最後の[EOF]の上の場合は-1(eofという定数と同じ値)になります。 (秀丸マクロヘルプより)

文字コードはSJISで指定する。

※実際に編集中のテキストの文字コードには関係なく、Shift-JIS の文字コードを返します。

○LINK:第III部~秀丸マクロのいろはにほへと 秀丸マクロで文字列を編集する

http://homepage2.nifty.com/jr-kun/hidemaru_qa/3_string.html#CODE

ASCIIコードの参考

○LINK:ASCIIコード表

http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html

【ASCIIコードの例】
タブ文字	0x09
*	0x2A
+	0x2B
SJISのコード参考

○LINK:Unicode対応 文字コード表

http://ash.jp/code/unitbl21.htm

【SJISコードの例】
■	81A1
□	81A0
・	8145
>	8184
これから&そのほか
「○LINK」以降もなんかマークアップしたい。
<p>&nbsp;</p>はコピペツールから手動で入れて、任意改行とする。
リンクを追加。WPの自動リンク付与プラグインとの兼ね合い検討。

○LINK:リンクを追加する秀丸マクロ-insertA.mac-[to-R]

http://blog.webcreativepark.net/2007/04/09-143540.html

○LINK:JavaScript++かも日記: 【jQuery】HTMLを書くだけで自動的にアンカー目次を作成してくれるscript

http://jsgt.org/mt/archives/01/001792.html

Zen-cogingなんかも興味ある。
○LINK:ブロガーにもおすすめ!「秀丸でZen-coding」がやっぱり便利な件 – IDEA*IDEA ~ 百式管理人のライフハックブログ

http://www.ideaxidea.com/archives/2010/04/hidemaru_zen_coding.html

・引用、H6などのデザイン整形
おいおい研究ということで。

 

に関しては、秀丸マクロのほうに代わりになる記号を入れておけばいいんじゃないかしら。それこそbrとか。または3行以上の改行のみが続く場合はnbspを入れておくとか。。。