我维护了一个有点受欢迎的Emacs包(ido-ubiquitous),我想将;;;###autoload
注释添加到我的包中,这样在激活模式之前不需要加载它。我前一段时间尝试使用相同的软件包,这导致了一些只在软件包自动加载时出现的神秘错误,所以我删除了所有自动加载的东西,问题就消失了。我想再试一次,但是只有我能找到关于如何做到这一点的明确文档,所以我不会再次引入相同的错误了。
那么有没有为Emacs Lisp软件包添加自动加载cookie的权威指南?
编辑:查看我的Git日志以获取我的软件包,我看到一些提交引用自动加载的提交:
这些提交表明我真的不确定要添加自动加载的内容。特别是,f6086e5和66b782f表明我认为我应该自动加载自定义变量,并得出结论我还需要自动加载定义其默认值的defconst
表单。如果我没记错的话,这是对无效变量错误的响应,因为自动加载的defcustom无法访问非自动加载的默认值(issue link)。最后,在283f9e9中,我对未来有一个展望,并通过删除除小模式定义之外的所有自动加载来获取Stefan的建议。
答案 0 :(得分:4)
;;;###autoload
Cookie只是标记需要提升到<pkg>-autoloads.el
文件的代码。然后在启动时急切地加载此文件,但这可以快速完成,因为它是一个小得多的文件。因此,您通常只需要在几个主要入口点上使用这样的cookie。例如。我首先只在ido-ubiquitous-mode
上放一个这样的cookie。
答案 1 :(得分:0)
自动加载的文档在这里:
C-h i g (elisp) Autoload
RET
您是否能够提供有关您遇到的错误的详细信息?