ライブラリを遅延ロードするマクロ
特徴
- 引数一つで動く
- 複数の関数を同時に autoload にできる
- ライブラリのロード後に実行する式を書ける(eval-after-load を使う)
- ライブラリのパスを返す
- すでに autoload として定義されていれば、重複して定義しない
- quote して渡す(趣味)
基本的には、このように使う。
(lazy-load-eval 'multi-term)
multi-term が初めて呼ばれた時に multi-term がロードされる。
遅延ロードに使う関数を複数にしたい場合、ライブラリ名と別の関数を使いたい場合は、第二引数にリストとして渡す。
(lazy-load-eval 'multi-term '(multi-term multi-term-dedicated-open))
ライブラリがロードされた後に実行したい式がある場合、第三引数以降に置く。
(lazy-load-eval 'multi-term nil (setq multi-term-switch-after-close nil))
このマクロは展開した時ライブラリのパスか、存在しなければ nil を返すようになるため、ライブラリが存在する場合のみ(遅延実行でなくすぐに)実行したい式がある場合、次のように書くことができる。
(when (lazy-load-eval 'multi-term) (global-set-key (kbd "C-x C-x C-s") 'multi-term))
参考
http://e-arrows.sakura.ne.jp/2010/03/macros-in-emacs-el.html