[Mew-dist 07975] Code conversions on Mew.

Kyotaro HORIGUCHI kyota at example.com
1999年 3月 10日 (水) 21:44:41 JST


堀口です. 多言語化で盛り上がっているところを済みませんが, 日本語
ではまってます^^;

 現在の環境は Mew1.94b13/IM110/Mewdow1.03a/WindowsNT 4.0 です.

 この環境では名前に日本語の入ったフォルダで正しく scan/pick がで
きるようにするために (setq mew-cs-noconv nil mew-cs-pick
'no-conversion) を行う必要があります.これは以下の2つの部分が原因
となっています.

  a) scan を行うときに mew-summary-scan-body が imls を呼び出すと
     きにパラメータをエンコードしないように設定してしまっているた
     め, 日本語入りのフォルダ名が無変換で imls に渡される.

  b) pick の際に minibuffer で読みこむパターンを無理やり SJIS
     (EUC) に変換している. ここで(a)の問題を避けるために
     mew-cs-noconv を変えてしまっていると imgrep に渡されるパター
     ンが壊れてる.

 フォルダ名に日本語を入れるほうが悪いと言う話もないではないですが, 
この辺のコード変換はもうちょっと大きく整理しなおして, 以下のよう
にした方がいいと思うのですがどうでしょうか?

 1. im へのパラメータのコード変換は全面的に Mule に任せる.

 2. pick パターンなどの多言語的な(?)パラメータはプラットフォーム
    非依存のASCIIだけで表現できるような形式にエンコードする. (Bエ
    ンコードとか?)

# 具体的にどこをどう変えるかはよくわからないのですが^^;

 
以下は状況のちょっと細かい説明です.
============================================================
 Mew-1.94b9 のころから名前に日本語が入ったフォルダで 's' ができな
くなっていました. 出てくるエラーは start-process の中で

(file-error "Setting current directory" "no such file or directory"...

 です,


 で,この原因は 1.94b13 では mew-scan.el:104 のこの部分にあります.

>  (let ((process-connection-type mew-connection-type1)
>	(file-name-coding-system mew-cs-noconv)) ;; for grep

 この変更は [Mew-dist:07635] Virtual mode on XEmacs にあるように 
XEmacs で Virtual mode での日本語の pick ができるようにするための
修正らしいです.

 mew-summary-trace-directory が t だと, フォルダのあるディレクト
リ(?)をバッファのカレントディレクトリに設定します.

 start-process では最初にこのディレクトリに移動しようとしますが, 
そのディレクトリ名は file-name-coding-system (nil なら
default-file-name-coding-system) に従ってエンコードされます.

 ところがこれが mew-cs-noconv に設定されてしまっているのでエンコー
ドされずに先のエラーが出ます.

 ここでは mew-summary-trace-directory を nil にするとこれ自体は回
避できますが, 今度は pick がまったくききません. これはパラメータ
として与えられた日本語入りのフォルダ名が内部コードのまま imgrep 
に渡されるためのようです.

 と言うわけでこれも mew-cs-noconv を nil にする(かなり強引)ことで
ここはパスできます. こんどは pick ができるようになりました. とこ
ろが今度は日本語での pick ができません. 理由は 
mew-pick-canonicalize-pattern で minibuffer で入力したパターンを
強引に mew-cs-pick (win32では sjis) に変換しているためです.

 こんどはこの mew-cs-pick を no-conversion にすることで日本語のパ
ターンも正しく引き渡されて pick ができるようになります.

-- 
堀口恭太郎 



Mew-dist メーリングリストの案内