はじめての elisp (LDR の未読件数を表示)

emacs はじめました。

Lisp への関心、と言うより憧れの感情から Scheme を学び始め、Vim+Scheme の組み合わせが案外扱いづらいな、という感想から emacs に手を出したところ、後戻りできなくなってしまった、という感じです。

元来私はガチガチの Vimmer だったんですが、盛んに Vim スクリプトを書いていた頃から emacsプログラマビリティーの高さを羨ましく思っていました。しかし、アンチ emacsイデオロギー*1 (に加えて Lisp 嫌い) に強く支配されていて、自分を変えることが出来ずにいたのでした。

ようやく最近になって Lisp への苦手意識が払拭でき (まだマクロは読み書きできませんが)、それと連動して emacs にも抵抗が低くなった、というわけです。


さて、スクリプトですが、このように暫く手を止めて考えていると
emacs-ldr-unread
未読記事の件数がエコーされる、というものです。

作業に集中している間は決して邪魔されない、というのが良い所かなと思います。モードラインに表示し続けるという選択肢もあると思いますが、簡単な方を選びました。

(require 'url)
(defun ldr-notify-unred (user)
  (url-retrieve (concat "http://rpc.reader.livedoor.com/notify?user=" user)
                (lambda (_)
                  (re-search-forward "^|")
                  (princ (concat "LDR unread items: "
                                 (thing-at-point 'word))))))
(run-with-idle-timer 13 t 'ldr-notify-unred "your-livedoor-id")

"url" というモジュールを使っています。Meadow3 では標準で入っています。なお Meadow3 の場合は require も要らないみたいです。

*1:小さなツールを組み合わせてアプリケーションを作る、という Unixミニマリズム思想がその根幹をなしています。これを反映して、エディタはエディタであることに徹するべきだ、というのが Vim の開発思想の柱の一つにもなっています。