ブログのポストや普段のメモ書きはMarkdownで書いています。プロセッサにはテーブルや定義リストといった拡張文法を持つPHP Markdown Extraを使っていて、Wordpressのプラグインディレクトリに放り込みつつ、以下のように変更したものを手元でも使っています。
--- markdown.org.php 2008-01-20 17:15:08.000000000 +0900
+++ markdown.php 2008-01-20 17:16:21.000000000 +0900
@@ -1,3 +1,4 @@
+#!/usr/bin/env php
<?php
#
# Markdown Extra - A text-to-HTML conversion tool for web writers
@@ -2633,4 +2634,11 @@
software, even if advised of the possibility of such damage.
*/
-?>
\ No newline at end of file
+
+if ($argc < 2) {
+ $src = 'php://stdin';
+} else {
+ $src = $argv[1];
+}
+echo Markdown(file_get_contents($src));
+?>
実際に、ローカルのテキストファイルをHTML化する時には以下のような関数を使ってEmacsから呼び出しています。
;; リージョンの内容をMarkdownExtraで変換する関数
(defun markdown-region (from to)
(interactive "r")
(if (> from to)
(rotatef from to))
(let ((buffer-output (get-buffer-create "*markdown*")))
(with-current-buffer buffer-output
(erase-buffer))
(call-process-region from
to
"markdown.php"
nil
buffer-output
nil)
(switch-to-buffer-other-window buffer-output)))
このままでも結構満足していたのですが、昨日になってEmacs markdown-modeという素晴らしいものを見つけてしまいました。
markdown-modeは、Markdownで書かれたテキストのSyntax Highlightingとhtml-helper-modeライクなキーバインドでのマークアップを支援してくれ、ブラウザでのプレビュー(C-c C-c p)やバッファ内容のHTML化(C-c C-c m)もできる優れもの。.emacsでは以下のように書いて、変換に使用するコマンドを指定しています。
;; markdown-mode
;; http://jblevins.org/projects/markdown-mode/
(autoload 'markdown-mode "markdown-mode.el"
"Major mode for editing Markdown files" t)
(setq auto-mode-alist
(cons '("\\.mdml$" . markdown-mode) auto-mode-alist))
;; markdown-modeで利用するコマンド
(setq markdown-command "markdown.php")
markdown-modeにはリージョンの内容をHTML化する機能はなさそうなので前述のmarkdown-regionも併用していますが、これでかなり便利になりました。