[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: mime-charset-coding-system-alist



>>>>> On Sat, 14 Jun 2008 19:15:21 +0900, Tsuyoshi CHO wrote,
> User-agent/Netinstall current(のはず)の環境なのですが、
> 
> mime-charset-coding-system-alistが以下のような状況で起動してきます。
> これは.emacs.elを外す、もしくは-qで起動して(require 'mime)でもそうなります。
> 
> それ自体で問題はないのですが、Wanderlustがx-ctextがあることを期待している部分が
> ありまして、現在のパッケージだと.foldersで日本語名のフォルダが壊れて保存されてし
> まいました。
> # 今は自力でmime-charset-coding-system-alistに追加して対処しました。
>
> 事前になんらかの設定がないとx-ctextが追加されないのでしょうか?

mcs-20.el での初期化処理では alist の要素のcar がシンボル(ex. x-ctext)が
coding system として存在する場合はmime-charset-coding-system-alist に定義
しない、という動きをしますよね。なので x-ctext という coding-system が存
在する環境では x-ctext は mime-charset-coding-system-alist に含まれないの
が正しい動きかと思います。


> # システムにx-ctext charsetがないみたいですが...そこら辺が原因でしょうか?

これ、どうやって確認しました?

少なくとも手元の最新の meadow では (mime-charset-list) の結果には
x-ctext は含まれる(ので当然 mime-charst-coding-system-alist には含まれな
い)ようですし、(coding-system-p 'x-ctext) => t ですし、
(mime-charset-to-coding-system "x-ctext") => x-ctext で
(coding-system-to-mime-charset 'x-ctext) => x-ctext ですので、たりないこ
とはなさそうに思えるのですが。『x-ctext charset がない』というのが何を指
しているのか気になります。


いずれにせよ、mime-charset-coding-system-alist に 'x-ctext を追加すれば
正常に動くというのは、奇妙ですね。

なんとなく wanderlust の問題のような気がします。まずはそれを切り分けるの
が先決ではないかと思います。追うなら wanderlust での件の .folders の保存
処理のところでしょう。 wl-dldmgr.el にある以下のコードが該当しそうです。

    (let ((output-coding-system (mime-charset-to-coding-system
				 wl-mime-charset)))
      (write-region
       (point-min)
       (point-max)
       wl-folders-file
       nil
       'no-msg)
      (set-file-modes wl-folders-file (+ (* 64 6) (* 8 0) 0))) ; chmod 0600


ここで、通常状態では
 (mime-charset-to-coding-system wl-mime-charset) => 'x-ctext 
で、mime-charset-coding-system-alist に元のctext の定義を追加した場合は
'ctext が返ります。その違いくらいですね。

ところで、output-coding-system ってなんでしたっけ? 昔の
coding-system-for-write 相当だっけか? もう忘れてしまって思い出せない。。。
ともあれ上のコードでやりたいことは output-coding-system ではなく
coding-system-for-write で束縛することなのだろうと思うので、以下の修正で
今回の問題は解消したりすることを期待しますがどうでしょうか? > 長さん

# 本当は読み込む側(wl-folder-create-folder-entity<f>) でもやるべきかも


--- c:/meadow3/packages/lisp/wl/wl-fldmgr.el	Sun Mar 20 13:10:03 2005
+++ c:/meadow3/packages/lisp/wl/wl-fldmgr.el	Mon Jun 16 10:58:56 2008
@@ -1379,8 +1379,8 @@ (defun wl-fldmgr-save-folders ()
     (if (and wl-fldmgr-make-backup
 	     (file-exists-p wl-folders-file))
 	(rename-file wl-folders-file (concat wl-folders-file ".bak") t))
-    (let ((output-coding-system (mime-charset-to-coding-system
-				 wl-mime-charset)))
+    (let ((coding-system-for-write (mime-charset-to-coding-system
+				    wl-mime-charset)))
       (write-region
        (point-min)
        (point-max)




とはいえ、 'x-ctext ではダメで 'ctext だとよいという理由はわからないですが。


output-coding-system は wl-address.el でも2箇所で使ってるようですが、その
合計3箇所がすべてですね。

このあたり、wl に詳しい方、フォロー願います。

--
Shun-ichi Goto