after-init-hook と emacs-startup-hook の違いを読み解く
当たり前だけど、「どちらも hook なのだけど名前が違う」ってことは「起動されるタイミングが違う」ってことだ。 で、 Startup Summary - GNU Emacs Lisp Reference Manual を見ると
after-init-hook
は 17.emacs-startup-hook
は 25.
でそれぞれ呼び出されているので、言い換えると
「 after-init-hook
のあと 18. - 24. の処理をしてから emacs-startup-hook
が呼ばれる」
ってことだ。
というわけで、ざっくり 18. - 24. の処理を読み解くと…
*scratch*
バッファーの mode を設定する- (
--batch
時省略) テキストターミナルから起動されていたらそれら固有のライブラリーを読み込んで、tty-setup-hook
を呼ぶ - エコーエリアの初期メッセージ表示
- ここまでで処理されていないコマンドラインオプションを処理
--batch
が指定されていたら Emacs を終了*scratch*
バッファーが存在する かつ 空 だったら初期メッセージを挿入するinitial-buffer-choice
もしくはコマンドラインオプションで指定されたファイルの buffer を current buffer にする
って感じのよう。 これを見る限り、そんなにナーバスになって使い分けなきゃいけないこともなさそうなんだけど、
- 初期バッファに反映させたい設定とかは
after-init-hook
で終わっていたほうが良い?? - 逆にバッファーとか関係なく、
(server-start)
のように「単に起動時に1度実行しておきたいだけ」みたいなのはemacs-startup-hook
で良さそう?? --batch
でも適用されていた方がいいものはafter-init-hook
??
って感じかな??