[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:02207] mhc-default-coding-system の変更



白井です。

# こちらではめちゃくちゃお久しぶりです。

ひさしぶりに Meadow 側で新しいスケジュールを作って UNIX と sync
したところ、UNIX 側でのスケジュールのパースで余分な '^M' が出て
正常にパース出来なくなりました。これは、最近の Emacs CVS Head で
以下の変更があったためです。

>> Meadow も NTEmacs も同じ挙動をするのですが、write 系の
>> coding-system の扱いが変わりました。
>> 
>> まず、挙動が変わったのは、system_eol_type が LF 以外の OS 上の
>> Emacs です。なので、system_eol_type が CRLF の Windows (Meadow、
>> NTEmacs)、CR の MAC (詳しくは聞かないで)が該当します。
>> 
>> どうなるかというと、あたえた coding-system が eol type を含まな
>> いときに、実際に使用される coding-system が Windows の場合
>> 
>> 従来: xxxxx-unix として扱われる
>> 現在: xxxxx-dos となる *関数もある*
>> 
>> となります。
>> 
>> 以下、簡単のために Windows で 'japanese-shift-jis を
>> coding-system としてあたえたときの挙動ですが、
>> 
>> (1) encode-coding-char|string|region などは
>>   'japanese-shift-jis を 'japanese-shift-jis-unix とみなして処理
>>   を行ないます。これは、従来からと同じ動きです。
>>   http://www.meadowy.org/meadow/ticket/296 で報告のあった、Mew
>>   の draft や emacs-w3m shimbun の不具合は (1) に該当するので、
>>   現在は期待どおりに動作します。
>> 
>> (2) file に書き込むときに 'japanese-shift-jis を指定すると、実際
>>     には system_eol_type を適用して、'japanese-shift-jis-dos が
>>     使用されます。今まで、LF で書かれていたファイルが CRLF になっ
>>     ていたら (2) が原因です。もし、CRLF で困るようなら、その
>>     elisp で write-region() などで拘束している
>>     coding-system-for-write の値などを適切に設定すれば LF になり
>>     ます。自分で直すか、その elisp の作者に直してもらってくださ
>>     い。
>>     
>> (3) process(network もかな?) も (2) と同様に
>>     'japanese-shift-jis を指定すると、'japanese-shift-jis-dos と
>>     みなされます。今まで動いていた process に突然 ^M も送るよう
>>     になったら、(3) が原因です。これまた、直してもらいましょう。
>> 
>>     http://www.meadowy.org/meadow/ticket/301 はおそらく (3) でしょ
>>     う。

現在は mhc-default-coding-system => iso-2022-7bit-ss2 なので、ス
ケジュールを保存するときに (2) に該当し、iso-2022-7bit-ss2-dos
で保存されるからです。

## なので、自分で直します ^^;;;

mhc-default-coding-system を使っている関数はみんな見てみましたが、
特に問題になりそうなところは無かったので、

(defcustom mhc-default-coding-system
  (if (>= emacs-major-version 20) 'iso-2022-7bit-ss2-unix '*iso-2022-ss2-7*)
                                                    ~~~~~
と勝手に変更させて貰います。

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxxxx)