autoload如何工作?

时间:2016-05-03 02:43:40

标签: elisp autoload

假设我在包中有3个函数:

;;;###autoload
(defun my-funcA () ...)

;;;###autoload
(defun my-funcB () ...)

;;;###autoload
(defun my-func-init () ...)

如果调用其中一个函数,是否会加载所有函数声明? 换句话说,如果必须加载my-func-init才能使用此包,是否意味着所有autoload都是多余的?

1 个答案:

答案 0 :(得分:1)

就他们自己而言,这些评论只是评论。

使用单独的进程将关联的定义提取到loaddefs.el文件中。加载该文件时,将定义所有这些自动加载。因此,许多库的所有自动加载都可以捆绑在一起,可以快速加载。

M-x elisp-index-search RET autoload cookie RET

  

魔术自动加载评论(通常称为“自动加载Cookie”)   由';;; ### autoload'组成,在一条线上,就在它之前   在自动加载源文件中真正定义函数。   命令'M-x update-file-autoloads'写入相应的   'autoload'调用'loaddefs.el'。 (作为的字符串   自动加载cookie和生成的文件的名称   'update-file-autoloads'可以从上面的默认值中更改,请参阅   下面。)构建Emacs加载'loaddefs.el'然后调用   “自动加载”。 'M-x update-directory-autoloads'功能更强大;   它会更新当前目录中所有文件的自动加载。

包管理器处理任何给定包的自动加载cookie,因此包作者可以根据需要简单地添加这些注释。