markdown-mode

ブログのポストや普段のメモ書きは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も併用していますが、これでかなり便利になりました。

使用可能なタグ <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>