*scratch* を kill-buffer したら

バッファの中身をクリアしてくれたら便利っぽくね?と思って *query-kill-buffer-hook* にそんなことする関数突っ込もうとしてたら、ふと *kill-buffer-kills-scratch* が nil だったり non-nil だったりするときに *query-kill-buffer-hook* は蹴ってくれるのかわかんなかったので調べてみたら・・・!!
最初から *scratch* が lisp-interaction-mode ならバッファの中身をクリアするようになってた。
うーん。他のモードにすることはあんまり無い、かなぁ。どうだろう・・・。


一応メモ*1: *kill-buffer-kills-scratch* は *query-kill-buffer-hook* に入ってる kill-scratch-hook という関数でチェックされてて、non-nil だとすぐに t を返す、nil で *scratch* バッファである & lisp-interaction-mode である、なら erase-buffer する。
んで *query-kill-buffer-hook* は run-hook-with-arg-while-success で実行される& kill-scratch-hook がケツに入ってる、ので *query-kill-buffer-hook* に自分の関数追加してその関数で nil を返してしまうなら kill-scratch-hook は蹴られない= *kill-buffer-kills-scratch* は無視できる。

*1:日本語で書いたら異様にわかりにくい文章になった。この文章読むより lispmode.l の最後を読んだほうが早そうだ :p