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