autoloadは遅延ロードのための仕組みで, ある関数を呼び出したとき, 必要となる
ファイルをロードすることができます. これにより初期化の時点で requireや loadを
行う必要がなくなり, 起動の高速化が可能になります.
autoload cookieは autoloadに関する設定を自動生成するための メタ情報です.
update-file-autoloadsを実行すると, ;;;###autoloadが付与された
関数については autoloadの設定, その他 S式については, その式自身が生成されます.
ELPAや el-getを利用してインストールしたファイルの requireが不要なのは,
この自動生成されたファイルのみを読み込んでいるためです.
外部から利用する可能性のある関数についてはつけましょう. interactiveな関数だけでなく, 関数として外部から利用されるものについても 付与するようにしましょう.
またファイルをロードする前に実行したい S式がある場合も付与しましょう.
こちらはあまり利用する機会はありませんが, custom-theme-load-pathの設定等で
必要となります.
autoload cookieの利用例を以下に示します..
;;;###autoload
(defun sample-function ()
"This is sample function"
(interactive)
(do-something))
;;;###autoload
(do-something-2)
```
上記のようなファイルに対して, `update-file-autoloads`を実行すると下記のファイルが
生成されます. (余分な部分は除去. 実際には他の情報も生成される)
````elisp
;; 関数については autoload関数の呼び出しが自動で生成される
(autoload 'sample-function "test" "\
This is sample function
\(fn)" t nil)
;; その他 S式については, そのまま生成される
(do-something-2)