2005-10-02

Emacs 21.4 から emacs-atompub でポストする

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)"))
)

Bloggerhash_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