Magit で commit するときに diff のウィンドウが出るのを止める
Magitでcommitするときにコミットメッセージのウィンドウに加えて、diffのウィンドウが出てきて鬱陶しい。
diffのウィンドウの表示を抑制しつつ、コミットメッセージ側にdiffの内容を表示する方法を編み出した。
あのウィンドウを出してる関数はmagit-commit-diff
。
こいつがserver-switch-hook
とwith-editor-filter-visit-hook
でフックされている。
この2つをMagitのモードフックにて登録解除することで表示を抑制できる。
(leaf magit
:ensure t
:hook (magit-mode-hook . (lambda ()
(remove-hook 'server-switch-hook 'magit-commit-diff)
(remove-hook 'with-editor-filter-visit-hook 'magit-commit-diff))))
コミットメッセージに追記されている情報はgit
の仕組みで表示されている。$ git commit -v
というオプションでコミットメッセージにdiffの内容が表示される。
これをするためにEmacsから-v
オプションを設定するには、Magitでc
押したあとに-v
を打てばいい。
しかし、これを毎回やるのは面倒。
どうしたもんかと調べていたら、Magitの出してるメニュー(transientと呼ぶ)における選択の永続化ができると分かった。
詳細はここを参照。
コミットのメニューを出してる状態でC-x C-s
と押せば永続化できる。
Emacs再起動しても永続化されていた。
頑張って調べれば解決策が見つかるのはEmacsのいいところ。
逆に言うと、バッドノウハウばかりとも言える。
init.elってバッドノウハウの集まりな感じもしてきた。
ちゃんと理由をドキュメント化しないといけないかな。
きれいなinit.elを目指したい。
init.elにgifとか埋めて、htmlに吐き出せたら、設定と動作カタログになってうれしいのでは。
orgからinit.el生成するという逆のアプローチはよくあるんだけど。