diff-mode-hook ではダメだった。
どうもりんこ。
こないだ言っていた件です。
結果
いうまでも無く,惨敗。
M-x git-status から見る diff が化けるのでなんとかしたい。
というのをモットーに,今回の大会へ望んだわけです。
しかし,下記の方法では効果がなかったので,やらないようにしましょう。
- *git-status* は,git-status-mode
- *git-diff* は,diff-mode
なので,diff-mode.el を眺めてみる。diff-mode-hook があることに気付く。
下のような関数をこしらえて試してみると,
両モードにおいて,たしかにモードラインには,`u' とでる。
出るが,化ける。
ソースコードの日本語部分は,utf-8-unix。
(defun my-diff-mode-hook-func () (setq buffer-file-coding-system 'utf-8)) ;;(add-hook 'diff-mode-hook 'my-diff-mode-hook-func) ;;(remove-hook 'diff-mode-hook 'my-diff-mode-hook-func) (defun my-git-status-mode-hook-func () (setq buffer-file-coding-system 'utf-8)) ;;(add-hook 'git-status-mode-hook 'my-git-status-mode-hook-func) ;;(remove-hook 'git-status-mode-hook 'my-git-status-mode-hook-func)
なので,remove-hook で hook を取り除く。
余談ですが,hook する際 (lambda () ...) みたいにすると,
remove-hook するときにどうするんだ? となるわけで,
なるたけ無名関数? は使わない方がいいかと,僭越ながら,思います。
次の一手
なし。あるとすれば,どういう流れで diff の結果がバッファに出力されるかを
調べればわかりそうだが,そこまでのテクがないという罠。
感想
まだ負けてない!
けど,諦めてしまいそうな予感。