2008年7月8日火曜日

ポータブルで高速な.emacs.elの書き方



ネットを巡回していると、「ポータブルな .emacs.el の書き方(意訳)」という記事がありましたが、ここではさらに、「ポータブルでかつ高速起動する.emacs.el」の書き方を紹介したいと思います。
すなわち、.emacs.elで拡張ライブラリを設定するときには、

(require 'ライブラリ名)
(add-hook 'xxxx 'yyyy)
....
(setq xxxx 設定値)
....
という記法で書くことが多いのですが、これを以下のような記法で統一します。

(when (locate-library "ライブラリ名")
(autoload '関数名 "ライブラリ名" "関数の簡単な説明")
(autoload 'xxxx "....")
(add-hook 'xxxx 'yyyy)
....
(eval-after-load 'ライブラリ名
'(progn
(setq xxxx 設定値)
....)))
このように書くことで、以下のメリットがあります。

  • 指定されたライブラリが入っていないEmacs環境でも ".emacs.el" はエラーを起こさない。

  • 指定されたライブラリが入っていても、そのライブラリが必要とされるまで、読み込まれない。

この記法を活用すれば、ライブラリは使用するまで読み込まれないので、滅多に利用しないライブラリも安心して ".emacs.el" に組み込めることができます。なお、interactiveな関数(M-x xxxx で起動するタイプ)については、autoloadの第四引数をtにすることで、たとえライブラリが読み込まれなくても M-x xxxxで実行することができるようになります。
また、ライブラリを読み込む前に設定すべき事柄(フック関数など)は、eval-after-load の後には置かないように注意しましょう。

0 件のコメント: