emacs -q -l と initial-major-mode

.emacs から init.el に移行するにあたって、端末から以下のように起動してテストしていたのですが、

$ emacs -q -l init.el

どうしても、以下の設定が反映されないという現象に出会しました。

(setq initial-major-mode 'emacs-lisp-mode)

これは、*scratch* バッファの major-mode 設定で、上のようにすると *scratch* バッファが emacs-lisp-mode になるはずなのですが、ならない。lisp-interaction-mode のまま。


なぜだろうと思って調べてみると、以下のような事みたいです。

  • Emacs が起動 (normal-top-level) 関数が呼ばれる
  • .emacs や init.el の読み込み
  • initial-major-mode の値を見て、scratch バッファの major-mode を決める
  • コマンドライン引数の解析、処理をする (-q や -l の処理)

つまり、initial-major-mode の値を見て、*scratch* バッファの major-mode を決める処理は、コマンドライン引数解析より前にあるから、みたいです。


どうでもいいけど、はまりました。ただそれだけです。

更新時刻

  • 2011:05/08:23:30