WordPress を Markdown 書式で更新する (2): Weblogger Mode

WordPress を Markdown 書式で更新する (1)で Markdown 書式を HTML にできたので,それを WordPress (この blog) に投稿する手順を調べてみた.

Weblogger Mode をインストール & 設定

まずは,プログラムから投稿するために WordPress の XML-RPC インターフェースを有効にする.Wordpress なので設定メニューをクリックするだけで OK.これは org2blog を試したときにやってあったので,今回は省略.

Emacs から WordPress への投稿についてググってみたところ,Weblogger Modeを使えばいいらしいので,インストール & 設定してみる.

上記ページを参考に,weblogger.el をダウンロードして site-lisp ディレクトリに放り込む.

;; weblogger
(require 'weblogger)
(global-set-key (kbd "C-c b") 'weblogger-start-entry)

M-x weblogger-setup-weblog RET を実行すると,設定が必要な項目を順番に聞かれるので入力していく.

これで Weblogger Mode の設定は終了.

記事の投稿

M-x weblogger-start-entry RET で投稿エントリを作成開始.次のような感じで,記事のヘッダが入ったバッファが表示される.

Subject: blog 記事のタイトルを入力
Keywords: 記事のタグを入力? (試してない)
Date: 日付文字列
From: 投稿者
Newsgroup: 投稿する blog 名称
--text follows this line--

Subject:Keywords: 以外はデフォルト値が入っているので,だいたいは Subject: だけ入力している.どうも Date: フィールドでタイムゾーンがうまく扱われていないらしく,投稿後に確認すると9時間ずれている.ググってみると +0900 をつけたらうまくいったという記述も見かけたんだけど… とりあえず,投稿日付は編集したいことが多いので気にしないことにした.

本文は Markdown から生成した HTML を C-x i で読み込む.そのままだと HTML ヘッダも含まれてしまっているので, <body>〜</body> の中身だけ残して削除.このへんもちょっと elisp を書いたら対応できそうではあるけど,記事の HTML をいちおう確認して投稿したいので手動対応で.書くの面倒だし(ぉぃ).

いくつか記事を作って試してみて,下記のルールで書けばそのまま張り込めそうということがわかった.

  • 見出しは ### (h3) 以下のレベルを使い,必ずなにかのタグ [tag] をつける
  • コードブロックは <p>[コード]〜[/コード]</p> で囲む
    • あまりスマートじゃないけど,SyntaxHighlighter で使う [コード] は HTML タグじゃないからしょうがない…

ちょっと手作業が入るけど,ブラウザの入力窓で書くのと比べたら断然楽だし,手元に元ファイルが残るので,しばらくこの手でいくことに決めた.最近の数エントリは実際に上記の手順で更新してます.

SyntaxHighlighter Evolved を Lisp 対応

Emacs Lisp コードを WordPress blog に貼り付けたいので,Lisp 対応プログラムを追加する.下記のページから shBrushLisp.js と wp-syntaxhighlighter-hook.php をダウンロードする.

WordPress の wp-content/plugins ディレクトリに両方のファイルをコピーする.ディレクトリを作成しても OK なので,wp-syntaxhighlighter-brush-lispy ディレクトリを作ってそこにコピーした.

WordPress の Dashboard から,Plugin -> SyntaxHighlighter Evolved: Lisp Brush を Activate する.

[lisp]〜[/lisp],[elisp]〜[/elisp] などで囲んだ範囲がハイライトされるようになった… と,これらのブラケットをそのまま出力したい場合は,[ (&#91;) や ] (&#93;) はそれぞれ & 記法で記述する必要がある.

;; C & C++
(autoload 'c++-mode "cc-mode" "C++ Editing Mode" t)
(autoload 'c-mode "cc-mode" "C Editing Mode" t)
;(autoload 'gtags-mode "gtags" "gtags Mode" t)
(add-hook 'c-mode-common-hook
      (function (lambda () (progn
                 (c-set-style "bsd")
                 (setq c-basic-offset 4)
                 (setq indent-tabs-mode nil)
;                (gtags-mode)
                 ))))

WordPress を Markdown 書式で更新する (1)

いいかげん放置状態の日記もなんとかしないとなぁ… と思い立つ.

更新がどうしても滞るのは,書くのに手間がかかるから… いや,本文を書くのに時間がかかるのはしょうがないんだけど,それ以外の部分は簡単にしたい…^^;

なによりも筆が,いや,指が重くなるのは Web の Form から入力する部分.それであれば Emacs から更新できればいいよなーと.そう思って,以前,org2blog というものを試してみたことがあって,これはこれでちゃんと更新はできところまではやったんだけど,org-mode の書式にどうにも慣れられずに頓挫 orz.

それぞれに利点があるのは分かるんだけど,Wiki にしてもそんなにたくさんの書式は使い分けたくないよ…

そこで今回は,自作のシステムで使ったのでちょっとなじみがあり,github でも使われている Markdown 書式を使って更新することにした.

markdown-mode.el のインストール

まずは markdown-mode.el を使えるようにする.下記のページから markdown-mode.el をダウンロード.

Markdown 記法を解釈する外部コマンドとして呼び出すプログラムは,Markdown 記法と上位互換の MultiMarkdown を利用する.ほとんどのものは元の Markdown 記法で足りるけど,表などの拡張が入っているので,それも使えるかもしれないというもくろみ.こちらは MacPorts にあったのでそれを利用.

sudo port install multimarkdown

Emacs の設定ファイルに下記を記述.

(autoload 'markdown-mode "markdown-mode.el"
   "Major mode for editing Markdown files" t)
(setq auto-mode-alist
   (cons '("\\.md" . markdown-mode) auto-mode-alist))
(setq markdown-command "/opt/local/bin/multimarkdown")

拡張子 .md でファイルを開くと markdown-mode が起動する.

Markdown 記法でドキュメントを書いて C-c C-c m すると,別バッファに HTML にコンバートした結果が表示される.C-c C-c e すると,拡張子を .html にしたファイルをカレントディレクトリに出力する.