with-eval-after-loadとrequireとautoloadとadd-hookと
発端
違いは何だ!!
まとめ
違ったら教えてください
- 起動してずっと使ってる ->
require
- 起動時には必要ないけどmodeごとでは使う ->
autoload
- ライブラリでのsetqとかの設定 ->
add-hook
- ライブラリでのdefine-keyとかの設定 ->
with-eval-after-load
調べた感じ
autoload
とrequire
は使うタイミングは似てる?autolad
は必要なときに読んでくるので起動時に必要ではないものを設定するといいrequire
はこれが呼ばれたタイミングでライブラリ読むので起動時必要なものだけにしたほうが良さそう
起動時にjs2-modeが呼び出される
(require 'js2-mode) (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
初めてjsファイルを開いた時にjs2-modeが読み出される
(autoload 'js2-mode "js2-mode" nil t) (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
eval-after-load
とwith-eval-after-load
とadd-hook
の違い
eval-after-load
とwith-eval-after-load
の違いはwith-eval-after-load
はemacs24.4から新しく入ったマクロでprogn
使わなくて良くなった- add-hookはバッファを呼び出すたびに呼ばれる
eval-after-load
は最初に設定しているライブラリがloadされるたびに呼ばれるが2回目以降は早いらしい
This macro arranges to evaluate body at the end of loading the file library, each time library is loaded. If library is already loaded, it evaluates body right away. 15.10 Hooks for Loading
- setqとかはadd-hookがよくてdefine-keyとかはwith-eval-after-loadかな?