関数を含むファイルを読み込んだり、関数定義を評価したりして関数をインストールする代わりに、関数を利用可能にしつつ、実際には初めて呼び出されるまでインストールしないようにすることができます。これをオートローディングと呼びます。
オートロードされる関数を実行すると、Emacsはその定義を含むファイルを自動的に評価し、その後関数を呼び出します。
Emacsでは、オートロードされる関数はライブラリが即座に読み込まれないため、起動が速くなります。ただし、こうした関数を初めて使用する際は、格納されているファイルが評価されるまで少し待つ必要があります。
使用頻度の低い関数は、頻繁にオートロードされます。loaddefs.el ライブラリには、5x5 から zone
まで、数千ものオートロードされる関数が含まれています。もちろん、稀にしか使わない関数を頻繁に利用することもあるでしょう。その場合は、.emacs ファイル内で load
式を用いて、その関数のファイルを読み込むようにしてください。
私の.emacsファイルでは、本来であれば自動ロードされる関数を含むライブラリを14個ロードしています。(実際には、これらのファイルをダンプ済みのEmacsに含めておく方が良かったのですが、忘れていました。The GNU Emacs Lisp Reference ManualのBuilding Emacs、およびダンプの詳細についてはINSTALLファイルを参照してください。)
また、.emacs ファイルに自動ロードされる式を含めることも検討してください。autoload
は最大5つの引数を取る組み込み関数で、最後の3つは省略可能です。第1引数は自動ロードされる関数名、第2引数はロードされるファイル名です。第3引数は関数のドキュメント、第4引数はその関数をインタラクティブに呼び出せるかどうかを示します。第5引数はオブジェクトの種類を指定します—autoload は関数だけでなく、キーマップやマクロも扱うことができます(デフォルトは関数です)。
典型的な例を挙げます。
(autoload 'html-helper-mode "html-helper-mode" "Edit HTML documents" t)
(html-helper-modeは、配布版の標準仕様であるhtml-modeに代わる旧来の表記です。)
この式は html-helper-mode 関数をオートロードします。関数は html-helper-mode.el ファイル(または存在する場合は、コンパイル済みバイト版の html-helper-mode.elc)から読み込まれます。ファイルは load-path で指定されたディレクトリに配置されている必要があります。ドキュメントによれば、これは
HyperText Markup Language で記述された文書の編集を支援するモードです。M-x
html-helper-mode
と入力することで、このモードをインタラクティブに呼び出すことができます。(通常の関数はまだロードされておらず、そのドキュメントも利用できないため、オートロード式の中で関数の通常のドキュメントを再現する必要があります。)
詳細については、The GNU Emacs Lisp Reference ManualのAutoloadを参照してください。