coding-system を確認されたら auto-save を切る

前回に引き続き Emacs ストレス要因撲滅作戦。

僕は auto-save-buffers を有効にしてて、変更したファイルが自動的に保存されるようにしてます。使ってるのは http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=auto%20save にあるやつで、特に弄ってはいなかったと思う。

これで C-xC-s を押す必要が無くなって便利なんだけどいくつかの局面でハマることがある。その一つが編集してる buffer に(意図せずに)変な文字コードが混ざっちゃったとき。

通常であれば、

  1. C-xC-s する
  2. 「なんか変な文字があるけど、どのコードで保存する?」と Emacs が訊いてくる
  3. coding-system を選ぶ or C-g して変な文字を消す

といった流れになって、意図しない文字なので C-g で当該文字を消す選択をとることとなる。

んが、auto-save-buffers を使ってると

  1. 自動的に保存処理が走る
  2. 「なんか変な文字があるけど、どのコードで保存する?」と Emacs が訊いてくる
  3. C-g して変な文字を消そ…
  4. 最初に戻る

といった無限ループに陥ったりする。ムキー。

ってな訳で気が向いた*1ので、保存時に coding-system を訊かれたら自動的に auto-save-buffers を切るようにしてみた。

(defadvice select-safe-coding-system-interactively
  (before disable-auto-save activate compile)
  (auto-save-buffers-toggle t))

これでサル状態にならずに済むかな。


そもそも、変な文字コードが入んなきゃいい話なんですが、入っちゃうもんはしょうがない。たまーにしか遭遇しないので原因がよく判んないんだよなー。皆こんなことないっすか?

*1:久々に遭遇してムカついたともいう