とりあえず、howm上のorg記法ではてなダイアリーへアップロードまで出来る様になった*1ので、作業環境を移行させた。ここまでに使えるまでに行ったことを書いておく。
org-modeを8.0以降にする。
emacs24にインストールされているorg-modeは少し古く、ox-hatena.elはorg-mode ver8.0以上が必要なので、package.elでorg-mode最新版をインストールした。
ox-hatena.elのインストール
ox-hatena.el自身はgit-hubからダウンロードして、pathの通った所においた。この状態でexportを試してみると、理由はよくわからんがorg-with-silent-modificationsでエラーが出るので暫定回避した。メチャクチャな方法だけど、とりあえず動いたので先に進めた。
.emacsには下記を追加。
(require 'ox-hatena) ;; Bad Code. (defun org-with-silent-modifications (x) x)
書籍・音楽・映画などの紹介リンクの出力
この日記本来の目的は、本やDVDの記録を取る事だったので、
asin: isdn:
がそのまま出力される事は確認した。
- 作者: 佐々木宣文,後藤大地,佐藤広生
- 出版社/メーカー: 技術評論社
- 発売日: 2012/04/26
- メディア: 大型本
- 購入: 1人 クリック: 18回
- この商品を含むブログ (6件) を見る
howmのタイトル欄と日付の消去
howmのデフォルトだと
= ■ ←(タイトル欄) [2002-09-16 20:08] >>> /home/hira/elisp/howm/howm-mode.el ↑(作成日 & その前に見てたファイル)
が先頭行にあるので、org-modeのexport前に削除する必要がある。
org-export-before-processing-hookがexport処理前に実行してくれるらしく、これが使えるとわかった。
今回は、単純にマッチした行を出力バッファ上で消してしまうことにした。*2
(defun my-headline-removal (backend) (interactive) (when (eq backend 'hatena) (goto-char (point-min)) (while (re-search-forward "^=[^\t\n]*$\\|^\\[[0-9]+-[0-9]+-[0-9]+ ?.*\\].*$" nil t) (goto-char (match-beginning 0)) (kill-whole-line) (goto-char (point-at-bol))))) (add-hook 'org-export-before-processing-hook 'my-headline-removal)
export先のパス指定
デフォルトだとexport先のパスがhowmファイルと同一のディレクトリになる。これだとhowmのファイル管理に邪魔となるので、出力先を変更する必要があった。
で、調べたけどorg-modeの標準的な方法がわからない。仕方が無いので、ox-hatena.el自体に手を入れた。
;(outfile (org-export-output-file-name extension subtreep)) (outfile (org-export-output-file-name extension subtreep "~/tmp")) ;; modify
export完了後にはてなへアップロードする外部コマンドを実行する
全てemacsで完結させるつもりはないので、外部コマンドでアップロードさせる。いちいちターミナルでコマンド入力まではしたくない。
下記の関数で出力からアップロードコマンドまでを実行させた。
(defun my_upload_org () (interactive) (org-export-dispatch) ;; 外部アップロードコマンド実行 (let* ((outfile (org-export-output-file-name ".txt" nil "~/tmp"))) (start-process-shell-command "my_upload_org" nil "アップロードする外部コマンド" (expand-file-name outfile))))