Emacs 加载机制

Table of Contents

load

load 是比较底层的函数,还有一个封装的可供交互调用的 load-file 都是加载一个 el 或者编译的 elc 文件。

require

如果一个文件以 (provide 'helloworld) 结尾,就表明这个文件定义了一个名为 helloworld 的 feature。

可以用 (require 'helloworld) 加载,Emacs 会自动加载相关的文件而且不会重复加载,比 load 更智能高效。

但有一个问题:相关的 el 文件必须放在 Emacs 的 load-path 里。

autoload

autoload 比上面的两个更高级更智能:它不会加载文件,而是在调用某些函数的时候加载相关的文件。

但是对于自己写的函数前面加 ;;;###autoload 是无效的。

因为这个东西只有调用 generate-file-autoloads 将这些 autoload 生成到一个文件里才管用。