我维护一个比较流行的 Emacs 包(ido-无处不在 https://github.com/DarwinAwardWinner/ido-ubiquitous),我想添加;;;###autoload
对我的包进行注释,以便在激活其模式之前不需要加载它。不久前,我尝试使用同一个包进行此操作,结果导致了许多仅在自动加载包时才会出现的神秘错误,因此我删除了所有自动加载内容,问题就消失了。我想再试一次,但前提是我能找到有关如何执行此操作的明确文档,这样我就不会再次引入相同的错误。
那么有没有关于将自动加载 cookie 添加到 Emacs Lisp 包的明确指南呢?
编辑:查看我的包的 Git 日志,我看到一些涉及自动加载的提交:
-
283f9e9 https://github.com/DarwinAwardWinner/ido-ubiquitous/commit/283f9e9删除不必要的自动加载
-
66b782f https://github.com/DarwinAwardWinner/ido-ubiquitous/commit/66b782f自动加载覆盖变量的默认值
-
f6086e5 https://github.com/DarwinAwardWinner/ido-ubiquitous/commit/f6086e5自动加载修复
-
0eed206 https://github.com/DarwinAwardWinner/ido-ubiquitous/commit/0eed206删除不必要的自动加载cookie
这些提交表明我真的不确定要添加自动加载到什么。特别是,f6086e5 和 66b782f 表明我认为我应该自动加载自定义变量,并得出结论,我还需要自动加载defconst
定义其默认值的表单。如果我没记错的话,这是对 void-variable 错误的响应,因为自动加载的 defcustom 无法访问非自动加载的默认值(问题链接 https://github.com/DarwinAwardWinner/ido-ubiquitous/issues/16)。最后,在 283f9e9 中,我对未来有了一个愿景,并采纳了 Stefan 的建议,删除了除次要模式定义之外的所有自动加载。
The ;;;###autoload
cookie 只是标记需要提升到<pkg>-autoloads.el
文件。然后在启动时急切地加载该文件,但这可以很快完成,因为它是一个小得多的文件。因此,您通常只需要在几个主要入口点上使用这样的 cookie。例如。我首先只放一个这样的饼干ido-ubiquitous-mode
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)