Emacs 加载机制
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 生成到一个文件里才管用。