m4マクロを使ってはてなダイアリーの下書き支援

はてな記法やタグを打ち込むのが面倒なのでm4マクロで楽をする。
m4の簡単な使い方だけ知ってれば十分。


メリットとしては、

  • 短い名前のマクロを定義する事で、文字入力の手間を省ける。
  • 自分が覚えやすい名前のマクロを付けられる。
  • syscmdマクロでコマンドの出力をそのまま文中に埋め込めたり応用が効く。

マクロを定義

適当なファイルを作って、その中にマクロを定義する。


最初はコメントと引用符の設定をする。
デフォルトのコメントと引用符では被りやすいので変更する。
コメントは、はてな記法の下書き機能のコメントと同じにすると都合がいい。
引用符は、タイプしやすい様にした。

changecom(`<!--', `-->')dnl
changequote(`/?', `?/')dnl


自分流でマクロを定義する。
こんな感じにしてみた。

define(_t1_, /?*?/)dnl
define(_t2_, /?**?/)dnl
define(_t3_, /?***★?/)dnl
define(_tt_, /?*syscmd(/?perl -e 'print time'?/)*$1?/)dnl
define(_n_, /?=====?/)dnl
define(_br_, /?<br>?/)dnl
define(_p_, /?><pre>?/)dnl
define(_ph_, /?><pre class="hscroll">?/)dnl
define(_pv_, /?><pre class="vscroll">?/)dnl
define(_pvh_, /?><pre class="vhscroll">?/)dnl
define(_pe_, /?</pre><?/)dnl
define(_b_, /?<span style="font-weight:bold;">$1</span>?/)dnl
define(_xs_, /?<span style="font-size:x-small;">$1</span>?/)dnl
define(_c_, /?<span style="color:$1;">$2</span>?/)dnl
define(_a_, /?<a href="$1">$2</a>?/)dnl
define(_com_, /?$1 _b_($2)?/)dnl
define(_http_, /?&#104;ttp://$1?/)dnl
define(_tag_, /?<$1>?/)dnl
define(_dm_, /?<div class="mid">?/)dnl
define(_df_, /?<div class="foot">?/)dnl
define(_de_, /?</div>?/)dnl
define(_dnl_, /?dnl?/)dnl

_t*_は見出しで、_tt_は時刻付き見出し。
_p*_〜_pe_の間はpre記法で表示。
_b_(文字)で太字表示。
_xs_(文字)で小さい文字。
_c_(色, 文字)で文字に色を付ける。
_a_(URL, テキスト)でリンクをを貼る。
その他色々。

エディタで下書き

Emacsを使うと更に楽になる。
1行目にマクロを書いたファイルをincludeして下書きして、「M-x m4 hoge.txt」と入力してやれば、下半分に変換されたテキストが出力されるので、これをペーストしてやる。