我知道所有标有“;;;###Autoload”行的函数都将是自动加载函数,但问题是执行此“自动加载函数”的底层机制是什么?还有为什么当从 elpa 安装软件包时,会出现一个名为 XXX-autoload.elc 的编译文件?
当您安装 Elpa 软件包时,Emacs 会扫描软件包中的所有 .el 文件以查找自动加载令牌,并将这些函数/变量的存根添加到 [package]-autoloads.el 文件中。存根只是将信息附加到函数/变量符号上,告诉 Emacs 在哪里可以找到实际的定义以及文档字符串的内容。然后它将所有 .el 文件编译为 .elc 文件,包括自动加载文件。
然后(每次启动 Emacs 时)它会加载并评估 [package]-autoloads.elc 文件,而不是主 .elc 文件。这样,加载包的速度就会快得多,因为只有在调用自动加载的符号之一时才会加载主 .elc 文件。在此之前,Emacs 并不知道主 .el 文件中的其他函数/变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)