2007-01-15

Mew 5.2に独自Content-Typeを追加

Mewを5.2に上げたとたんに問題発生。どのメールを見ても、本文が表示されずに見慣れない

 ####### #     # #     #  #####  #######   ###   ####### #     #
# # # ## # # # # # # # ## #
# # # # # # # # # # # # # #
##### # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # ## # # # # # # # ##
# ##### # # ##### # ### ####### # #
というバナーが表示されるようになった。

あちこちにデバッグプリントを入れたりして調べるうちに、mew-mime-content-typeの中身を独自に追加していたのが悪さをしているのがわかった。

5.1までは、mew-vars2.elでmew-mime-content-typeにContent-Typeリストを初期設定していたので、~/.mew.elでこの変数に必要なContent-Typeを追加しておくだけでよかった。ところが、5.2では、mew-vars2.elではこの変数をnilに初期設定しており、~/.mew.elの後で読み込まれるmew-varsx.elで、この値がnilのときに限りリストを設定するようになっているため、mew-mime-content-typeをいじった結果、"text/plain"を含む基本的なContent-Typeがすべて抜けおちてmew-mime-functionが呼ばれてしまっていた。

なので、mew-varsx.el読込みの後で実行されるmew-init-hookでローカルな設定関数を呼んでもらうしかないようだ。

というわけで、~/.mew.elに
(defvar mew-prog-dvi '("xdvi" ("-geometry" "+0+0") t))
(add-hook 'mew-init-hook
(lambda ()
(setq mew-mime-content-type
(cons
'("application/x-dvi" "\\.dvi$" mew-b64
mew-prog-dvi mew-icon-text)
mew-mime-content-type))
))
を加えてみて、うまく動作することを確認した。

ちなみに、lambdaはself-quotingなのでquoteやfunctionする必要はない。


追記(1/17)

cons作ってsetqするより、add-to-listを使う方が洗練されてそうで見た目もすっきりするので変更。
(add-hook 'mew-init-hook
(lambda ()
(add-to-list 'mew-mime-content-type
'("application/x-dvi" "\\.dvi$" mew-b64
mew-prog-dvi mew-icon-text))
))



追記(1/17)

Mew5FAQに載っていた。

0 件のコメント: