@kyanny's blog

My life. Opinions are my own.

emacsclient というのを使ってみる

2008/05/14 追記

id:Plus さんに教えていただいて、できるようになった。ありがとうございます。

(save-window-excursion
(mew-summary-visit-folder mew-inbox-folder)
(mew-summary-retrieve))

cron でメール受信させたい (fetchmail+procmail でなく mew で) というのを考えたので、 emacsclient てのを使うとできそうだな、と思って試してみた。

(server-start) しておいて emacsclient --eval '(+ 1 2)' とかやると起動してる emacs に任意の S 式を実行させられる。ので、これで i にバインドされていた mew-summary-retrieve を実行させたらいいじゃん、と思ってやってみたけどそんなに簡単でもなかった。

(save-excursion
  (progn
    (switch-to-buffer "+inbox")
    (mew-summary-retrieve)))

まず +inbox バッファとかにいないと mew-summary-retrieve が動かないのでバッファを切り替えて、これで受信はうまくいくんだけど終わったら元のバッファに戻っていてほしい。というかできればバックグラウンドでやってほしいんだけどよくわからなかった。 save-excursion の使い方がなんか間違ってる気がするな・・・。 progn 外したりもしてみたけどやっぱり +inbox のまま。

これで何が嫌かっていうと、 Riece のバッファを開いたままちょっと目を離していて cron が走ると mew のバッファになってしまっている、という。これがプログラム書いてたりすると多分もっとひどくて突然バッファを切り替えられちゃうんだろうな。これでは使い物にならない・・・。