[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: mime-charset-coding-system-alist
- X-ml-count: 7383
- Subject: Re: mime-charset-coding-system-alist
- From: Shun-ichi GOTO <gotoh@xxxxxxxxxxx>
- Date: Mon, 16 Jun 2008 20:08:31 +0900 (JST)
- X-mailer: Mew version 2.2 on Emacs 22.2 / Mule 5.0 (SAKAKI)
>>>>> 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