その結果、Cの文字コード認識の部分のバグらしいことが判明しました。SJISの文字認識の部分へ必要なコーディング・システム情報が渡されていない模様。
とりあえず簡単な一行パッチだけどこれで治ります。
diff -urN emacs-23.3.orig/src/coding.c emacs-23.3/src/coding.c --- emacs-23.3.orig/src/coding.c 2011-01-09 02:45:14.000000000 +0900 +++ emacs-23.3/src/coding.c 2011-06-14 10:04:41.998645428 +0900 @@ -6501,6 +6501,7 @@ { category = coding_priorities[i]; this = coding_categories + category; + coding->id = this->id; if (this->id < 0) { /* No coding system of this category is defined. */
半田です。パッチありがとうございます。確かに sjis の detector だけは coding->id を利用するのでした。
返信削除ところでこのパッチを Emacs に取り込む場合 ChangeLog ファイルに以下のような記録をしないといけないので...
2012-10-13 Name xxxx@yyy.zzz (tiny change)
coding.c (detect_coding): ....
handa at gnu dot org までお名前とメールアドレスをお送りいただけないでしょうか。もしこのような記録は残したくないという場合は私の名前で ChangeLog を書いておきますが。