Emacs の起動高速化の試み(1)
1,000 行ある init.el
でも1秒ほどで起動できるようになった。
(M-x emacs-init-time
調べ)
結局のところ、いかにパッケージの読み込みを遅らせるかがキモなわけで、具体的には autoload
, with-eval-after-load
, after-init-hook
, emacs-startup-hook
, window-setup-hook
あたりを使って読み込みを遅らせることになる。
実際に書くときは use-package
を使うのが楽です。
migemo
の読み込みを下のように書いた。
他のマイナーモードもだいたい下のようなパターンに沿っている。
use-package
が評価された時点ではまだ実体は読み込まずに、autoload
化した migemo-init
を起動処理の終了にフックするだけである。
起動処理が終わるとはじめてパッケージの読み込みが行われる。
(use-package migemo :if (executable-find "cmigemo") :commands (migemo-init) :defer t :init (add-hook 'emacs-startup-hook 'migemo-init) :config (setq migemo-command "cmigemo") (setq migemo-options '("-q" "--emacs")) (setq migemo-coding-system 'utf-8-unix))
以下参考にさせていただきました。
[2018/10/01 追記] ardggy.hatenablog.jp