Emacs は開発版の 22.0.50 で emacs-atompub を使ってポストする方法は 以前書いた。今回は、 Emacs 21.4 で emacs-atompub を使ってポストする方法を書いてみる。ほとんど前回の焼き直しだけど、Emacs 21 ユーザーの参考になれば。
最新版の入手
Emacs 21.4 で必要になる外部パッケージは二つ。url パッケージと nxml パッケージ。
url パッケージは、emacs/w3 という pure EmacsLisp なテキスト・ブラウザーのために開発されたパッケージ。最近、emacs/w3 の開発の話は聞かないけれど、url パッケージは開発が進んで開発版 Emacs に取り込まれた。 Emacs 21.4 では、まだ標準パッケージじゃない。 emacs-atompub のページに、 emacs-atompub 用にチューンされた url パッケージがあるので取ってくる。
nxml パッケージは、XML Scheme をパースして Valid な XML テキストを書くための Emacs パッケージ。同種のソフトに psgml パッケージというのもある。 emacs-atompub では、XML の検証用に nxml パッケージを利用している。
emacs-atompub, url, nxml の最新版は以下のサイトからダウンロードできる。
インストール
手元の環境だと Emacs 22.0.50 が動いてるので、標準的なインストールをすると開発版の EmacsLisp と競合してしまう。そんなわけで、 Emacs 21.4 だけで使うように Path がちょっと変わってる。分かる人は、自分の環境に合わせて読み変えて下さい。
$ cd ~/ $ mkdir site-lisp $ cd site-lisp $ wget http://purl.org/net/emacs-atom-api/emacs-atom-api-latest.tar.gz $ wget http://purl.org/net/emacs-atom-api/url.tar.gz $ wget http://www.thaiopensource.com/download/nxml-mode-20041004.tar.gz $ tar xzf emacs-atom-api-latest.tar.gz $ tar xzf nxml-mode-*.tar.gz $ tar xzf url.tar.gz $ ls emacs-atom-api nxml-mode-20041004 url emacs-atom-api-latest.tar.gz nxml-mode-20041004.tar.gz url.tar.gz
nxml-mode の elc ファイルは、XEmacs 用かもしれない。もし上手く動かなかったら、 rm *.elc してみて下さい。何でそう思ってるのか、ソースが分かんない。単なる記憶違いかも。何か分かれば、追記します。
.emacs の編集
.emacs に次のコードを追加。
;; ;; url package ;; (setq load-path (cons "~/site-lisp/url/" load-path)) ;; ;; nXML mode ;; (setq load-path (cons "~/site-lisp/nxml-mode-20041004/" load-path)) (load "rng-auto") ;; ;; atom-api ;; (setq load-path (cons "~/site-lisp/atompub/" load-path)) (autoload 'atom-api:entry/edit "atom-api" "Prompts for an entry to edit, opens in new buffer." t) (autoload 'atom-api:entry/new "atom-api" "Create a new entry." t) (autoload 'atom-api:entry/delete "atom-api" "Prompts for an entry to delete." t)
blogger 用の設定
Blogger のエントリー・ポイントを emacs-atompub に教えてやる。ただ、当方 proxy のある環境でしかテストが出来なかった。だから、この設定は proxy 用の設定。proxy がない場合は... もし出来た人、居たらトラックバック下さい。
proxy は proxy.foobar.net、ポートは 8080 とする。
(setq url-http-real-basic-auth-storage '(("proxy.foobar.net:8080" ("Blogger" . "hash_by_username_and_password")))) (setq url-proxy-services '(("http" . "proxy.foobar.net:8080") ("https" . "proxy.foobar.net:8080") ("no_proxy" . "\\(localhost\\|localhost\\.localdomain)")) )
Blogger の hash_by_username_and_password と書かれた部分は、ユーザー名 foo、パスワード bar として、次の操作で得た文字列と置き換えて下さい。
$ echo -n 'foo:bar' | openssl enc -e -base64
使ってみる
- atom-api:entry/new
- 新規ポスト記事を作成
- atom-api:entry/publish
- 書いた記事を投稿する
edit 用パッチ
2005-10-02 現在の emacs-atompub では edit が動かない (実行すると空のバッファーが返る)。一応、下のパッチを書いた。無保障だけど、人柱な人はどうぞ。
--- old-emacs-atompub/atom-api.el 2005-09-26 17:49:32.000000000 +0900 +++ new-emacs-atompub/atom-api.el 2005-10-01 03:26:18.000000000 +0900 @@ -695,8 +695,10 @@ (atom-api:init 'sync) (let ((entry (atom-api:entry/prompt-for "Entry: "))) (switch-to-buffer (xml-node-text (xml-get-child entry 'title))) - (if (not (buffer-modified-p)) - (atom-api:entry/to-editable entry)))) + (unless (buffer-modified-p) + (insert (atom-api:xml/to-string + (atom-api:entry/to-editable (atom-api:xml/parse-string entry)))) + (atom-api:entry/edit-thunk)))) ;;;###autoload (defun atom-api:entry/delete ()
No comments:
Post a Comment