我应该在我的Emacs Lisp软件包中添加自动加载cookie?有明确的指南吗?

时间:2013-11-19 23:12:56

标签: elisp autoload

我维护了一个有点受欢迎的Emacs包(ido-ubiquitous),我想将;;;###autoload注释添加到我的包中,这样在激活模式之前不需要加载它。我前一段时间尝试使用相同的软件包,这导致了一些只在软件包自动加载时出现的神秘错误,所以我删除了所有自动加载的东西,问题就消失了。我想再试一次,但是只有我能找到关于如何做到这一点的明确文档,所以我不会再次引入相同的错误了。

那么有没有为Emacs Lisp软件包添加自动加载cookie的权威指南?

编辑:查看我的Git日志以获取我的软件包,我看到一些提交引用自动加载的提交:

  • 283f9e9删除不必要的自动加载
  • 66b782f自动加载覆盖变量的默认值
  • f6086e5自动加载修复
  • 0eed206删除不必要的自动加载Cookie

这些提交表明我真的不确定要添加自动加载的内容。特别是,f6086e5和66b782f表明我认为我应该自动加载自定义变量,并得出结论我还需要自动加载定义其默认值的defconst表单。如果我没记错的话,这是对无效变量错误的响应,因为自动加载的defcustom无法访问非自动加载的默认值(issue link)。最后,在283f9e9中,我对未来有一个展望,并通过删除除小模式定义之外的所有自动加载来获取Stefan的建议。

2 个答案:

答案 0 :(得分:4)

;;;###autoload Cookie只是标记需要提升到<pkg>-autoloads.el文件的代码。然后在启动时急切地加载此文件,但这可以快速完成,因为它是一个小得多的文件。因此,您通常只需要在几个主要入口点上使用这样的cookie。例如。我首先只在ido-ubiquitous-mode上放一个这样的cookie。

答案 1 :(得分:0)

自动加载的文档在这里:

C-h i g (elisp) Autoload RET

您是否能够提供有关您遇到的错误的详细信息?