このチャプターの目次
Emacs Lisp には cl-lib
をはじめ、便利関数をまとめたライブラリが色々あります。これらを使うことで設定ファイルをスマートに書くことができますが、ロードはもちろん無料ではありません。
マクロだけに依存する init.el
各種便利ライブラリを使うとき、「使うのはマクロだけにとどめる」ことを意識すると起動の高速化になります。たとえば cl-lib
で定義されている cl-case
は関数ではなくマクロですが、一方 cl-every
は関数です。マクロはコンパイルの時にマクロを使わない形の式に展開されるので、一度コンパイルしてしまえば、起動時にそのマクロが定義されている必要はありません。
依存をマクロだけにすることができると、
(require 'cl-lib)
を以下のように書き換えて、
(eval-when-compile
(require 'cl-lib))
ロードをコンパイル時に限ることができます。これによって便利マクロたちを実質無料で使用することができ、起動は当然速くなります。
あるシンボルが関数なのかマクロなのか調べたい場合は、 M-x describe-function
が便利です。
注:「起動時にロードしたいパッケージ」の中に cl-lib
(など) の関数に依存しているものがあれば、せっかく頑張って init.el
から依存を消したところで結局 cl-lib
はロードされてしまいます。どのパッケージがどのパッケージに依存しているかは、次の章に紹介する方法で解析できます。