[備忘録] Emacs 初期化処理 整理
[備忘録] Emacs 初期化処理 整理
Emacsの初期化処理について、公式ドキュメント(英語)の内容を日本語で整理する。
Emacs 初期化処理
load-path
の追加
1. subdirs.el
によって標準のEmacs lispファイルが存在するディレクトリが、 load-path
に追加される。
leim-list.el
のロード
2. LEIM == Library of Emacs Input Methodの省略形
before-init-time
の設定
3. 変数 current-time
の値が設定される。
また、 after-init-time
には nil
が設定される。(この変数はEmacsが初期化中であることを表すフラグとしても使われる)
4. 言語設定の設定
LANG
などの環境変数で指定がある場合、その値をもとに処理される。
5. コマンドライン引数の解析
Early init file
の読み込み
6. Emacs起動時に独自の設定を反映させたい場合、Early Init Fileが使われる。
パッケージシステムやGUIが初期化される前に読み込まれる。
通常の初期化ファイルの代わりに使うことは推奨されていない。(GUIの初期化前などに実行されるため)
保存場所としては以下。
- ~/.config/emacs/early-init.el
- ~/.emacs.d/early-init.el
-q
, -Q
, --batch
の引数が指定されている場合、この処理は実行されない。
-u
の引数が指定されている場合、 ユーザーのホームディレクトリから探索する。
7. パッケージの有効化
package-activate-all
を呼び出し、すでにインストールされているパッケージを有効化する。
pacakge-enable-at-startup
に nil
が指定されている場合、もしくは -q
, -Q
, --batch
の引数が指定されている場合、パッケージの有効化は行われない。
後者の場合、--funcall
などによって明示的に package-activate-all
を呼び出す必要あり。
8. ウィンドウシステムに関する初期化
initial-window-system
によって指定された値をもとに、ウィンドウシステムに関する初期化処理が行われる。
バッチモードの場合、このステップは実行されない。
before-init-hook
の実行
9. 10. グラフィカルフレームの作成
initial-frame-alist
, default-frame-alist
で指定されている値をもとに初期化される。
バッチモード・デーモンモードの場合、このステップは実行されない。
11. 初期フレームの見た目の初期化
初期フレームの見た目が初期化され、メニューバーとツールバーが必要であればセットされる。
グラフィカルフレームが有効である場合、グラフィカル版のツールバーが表示される。
12. 変数の再初期化
custom-reeveluate-setting
によって、ビルド時の値から実行時の環境に合わせた値へ再度変数が初期化される。
site-start
ライブラリの読み込み
13. site-start
ライブラリが存在すれば読み込む。
-q
, -Q
, --batch
が指定されている場合この処理は実行されない。
14. ユーザーの初期化ファイル読み込み
-q
, -Q
, --batch
が指定されている場合この処理は実行されない。
-u
が指定されている場合、ユーザーのホームディレクトリから検索される。
default
ライブラリの読み込み
15. default
ライブラリが存在すれば読み込む。
-q
, -Q
, --batch
が指定されている場合この処理は実行されない。
16. ユーザー辞書の読み込み
abbrev-file-name
が存在する場合読み込む。
--batch
が指定されている場合この処理は実行されない。
after-init-time
の設定
17. after-init-time
に current-time
の値が設定される。
before-init-time
と比較することで、起動時にかかった時間が確認できる。
after-init-hook
の実行
18. 19. メジャーモードの設定
*scratch*
バッファが存在しFundamental modeの場合、 initial-major-mode
の値に従ってメジャーモードを設定する。
20. tty-setup-hookの実行
ターミナル上で実行されている場合、ターミナル専用のLispライブラリが読み込まれ tty-setup-hook
が実行される。
--batch
モード、もしくは term-file-prefix
に nil
が設定されている場合、この処理は実行されない。
21. 初期メッセージの表示
echoエリアに初期メッセージが表示される。
inhibit-startup-echo-area-message
が設定されている場合、この処理は実行されない。
22. 残りのコマンドライン引数の処理
ここまでで処理されていないコマンド引数が処理される。
23. batchモードの初期化完了
24. 初期スクラッチメッセージの挿入
*scratc*
バッファが存在し空の状態である場合、 initial-scratch-message
の値を挿入する。
25. 指定されたファイルの表示
initial-buffer-choice
に文字列が指定されている場合、指定されている名前のファイル、またはディレクトリを表示する。
関数が渡されている場合、引数なしで指定された関数を呼び出し返り値の名前のバッファを選択する。
コマンドラインでファイルが1つ指定されている場合、 initial-buffer-choice
で指定された内容と合わせて表示する。
コマンドラインで複数のファイルが指定されている場合、全ての指定されているファイルを読み込んだ後 Buffer List を initial-buffer-choice
で指定された内容と合わせて表示する。
emacs-startup-hook
の実行
26. 27. フレームのパラメータ変更
frame-notice-user-settings
を呼び出し、初期化ファイルの内容にしたがって、フレームのパラメータを変更する。(フレームの大きさや色など?)
window-setup-hook
の実行
28. emacs-startup-hook
と違ってフレームのパラメータが変更された後実行される。
29. スタートアップ画面の表示
コピーレフトや基本的な使い方を含む画面を表示する。
inhibit-startup-screen
が指定されているか、 initial-buffer-choice
が nil
でない、 または --no-splash
, -Q
が指定されている場合、この処理は実行されない。
30. デーモン化
デーモンモードで起動されている場合、 server-start
を呼び出しデーモン化される。
emacs-session-restore
の実行
31. X環境で実行されている場合、 emacs-seesion-restore
に直前のセッションIDを渡し実行する。
Discussion