xyzzy-022 / xyzzy

xyzzy 0.2.2 系列。有志により開発が継続中です。
http://xyzzy-022.github.com
MIT License
193 stars 44 forks source link

「最初からやり直し」を使った時に、ファイル先頭に書かれたエンコーディング指定を常に見るようにしてほしい #397

Closed molety closed 11 years ago

molety commented 11 years ago

編集メニューの「最初からやり直し」を使った時に、ファイル先頭に書かれたエンコーディング指定を常に見るようにしてほしいです。

例えば以下のようなファイルをShift_JISで保存すると、次にエンコーディング自動判定で開いた時にUTF-8とみなされ文字化けします。

# -*- encoding: UTF-8 -*-
プログラム

ここで編集メニューの「最初からやり直し」を使うと、なぜか文字化けが直ります。おそらくファイル先頭のエンコーディング指定を見ていないように思われます。 この場合たまたま文字化けが直っていますが、逆にファイルを開く時に正常だったものが「最初からやり直し」で文字化けするパターンもあるのではないかと思います。

なお、現状(0.2.2.250)で「損」の1字を書いたファイルをEUC-JPで保存し、エンコーディング自動判定で開き直すとShift_JISとみなされ文字化けしますが、以下のようにするとEUC-JPとして正しく開けます。

# -*- encoding: EUC-JP -*-
損

ここで「最初からやり直し」を使うと、エンコーディング指定が無視されて文字化けすることが予想されるのですが、なぜか文字化けはしません。 この場合はエンコーディング指定を見ているのか何なのか、よく分かりませんでした。

「最初からやり直し」は編集前の状態に戻す機能だと思うので、ファイルを開く時と同様のエンコーディング判定をするのがいいのではないかと思います。

以上の挙動は、編集メニューの「最初からやり直し」でなく、M-x revert-bufferを使った場合も同様のようでした。

x022235 commented 11 years ago

ファイルを開いたときは文字化けしないが revert-buffer すると文字化けするファイルの例

-*- encoding: shift-jis -*-
狎妓