package.el是否是自动require

我的config里先require了package包,然后配置如下,使用过程中发现my/packages里的很多包我自己并没有显式的require,但是emacs里却可以使用,想请教一下package.el里是否实现了自动require所有包,具体在我配置中的哪一句实现的?

因为有autoload机制

package.el 会为包生成autoload文件,然后package-initialize会加载这些autoload文件. 你不需要require就可以直接使用包里的一部分函数, 当这些函数被实际调用的时候, emacs会去加载对应的package(所谓lazy loading)

最近准备写一篇文章讲解一下autoload机制

4赞

原来如此,感谢感谢🙏

追问一句,package.el如何确定给哪个package加autoload,是通过my/package这个list嘛,具体实现是在package-install的时候还是那个package-selected-packages?

通过autoload cookie, autoload是函数级别的, 通常是用户使用的函数, 包作者会选择autoload

你可以在package文件里搜索;;;###autoload, package.el 为这个注释后面的定义生成autoload

细节的到时放在文章里说吧

也就是说那些自动require的包,是作者在里面做了autoload的配置,所以package.el会对它auto load,这样理解对吗?

是的, zsbd