add-to-list 这类语句可以 autoload 吗?

下面这种形式有效吗?

;;;###autoload
(add-to-list 'list-var 'foo)

背景是,我想让我自己写的包自动修改其它包的 custom variable (具体来说就是 dumb-jump)。这样用户就不需要自己进行设置了(这项设置主要是为 dumb-jump 添加新的语言规则)。或者是否有更优雅的解决方案?

可以。应该是任意的表达式都可以,可以用 M-x update-file-autoloads 确认下。

不了解你的需求,一般 Autoload 的使用比较克制,尽量避免影响用户的 Emacs,因为 Autoload 的加载常常是自动的、没法精细控制的。举个不太可能出现的例子,如果有个 Package 有下面的 Autoload,那么任何安装了这个 Package 的 Emacs 就打不开了,而且用户压根就不知道怎么一回事。

;;;###autoload(kill-emacs)
1 个赞

对,前几天我看到官方文档更新了, 明确说明 autoload 不能滥用, 建议只让用户最有可能使用的命令autoload,不常用的命令我感觉都不必要 autoload

1 个赞

这样情况下 autoload 标记的作用是让表达式在这个包被 defer 的时候仍可以在 Emacs 启动时执行。

我感觉这个不是一个好主意, 不建议悄悄的更改别的包的用户接口,除非你完全确定没有问题。

1 个赞