维护用户安装的elisp的Emacs自动加载文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了维护用户安装的elisp的Emacs自动加载文件?相关的知识,希望对你有一定的参考价值。

Emacs有一个看似非常好的工具,可以根据;;;###autoload形式的魔术源代码注释(“自动加载cookie”)构建自动加载文件,这些文件将被放置在每个定义上方的行上,以便自动加载;见(elisp)Autoload

这似乎是一个理想的工具,用于维护Emacs用户不可避免地最终安装在他们的配置文件中的那些小的单文件包的自动加载。只有一个小问题:这个设施(无论如何,在GNU Emacs中)似乎几乎完全专注于为Emacs本身生成loaddefs.el文件,对其他用途几乎没有(如果有的话)让步。

这并没有阻止大型包装使用autoloads.el机器来构建他们自己的自动加载文件,但是那些我看过的那些有相当多毛茸茸的代码致力于使它做所需要的,尽管一些毛羽可能归因于GNU Emacs / XEmacs的分歧。

(我认为XEmacs在这方面要好一点,可能至少部分原因在于它的官方软件包系统使用这种机制为每个软件包制作单独的自动加载文件。希望GNU Emacs包含ELPA软件包系统,也使用这种机器,导致他们方面的类似改进。)

所以,我的问题是:

我应该如何维护目录中所有.el文件的自动加载文件,假设它们已经具备了所有必要的;;;###autoload注释(自动加载cookie)?

[嗯。阻止报价在tex.SE上看起来很酷...]

我目前正在使用GNU Emacs 23.2.1,尽管答案越远,越好。 (就此而言,如果它也可以与XEmacs一起使用会很好。)

我在Windows上,但是在Emacs上安装了MSYS,所以sh / bash脚本可能会很好,只要它们不会调用任何异乎寻常的东西。

[我不完全确定这不属于超级用户,而不属于SO。如果已经有一个只需少量配置即可解决这个问题的软件包,它可能会这样做;另一方面,如果(我怀疑)只有相当粗略的代码片段可能需要大量的直接更改,我认为它可能属于SO。

答案

查看this answer"emacs23 / elisp: how to properly autoload this library?"

总之,您将所有包转储到特定目录中,并创建一个自己的update-auto-loads.el包,它构建了loaddefs.el并提供了一个可以随时运行的功能,可以随时重建loaddefs.el文件。

另一答案

2017年,您无需自行维护。相反,您可以使用现代的包管理器,例如straight.el,它专门用于处理这个问题(以及许多其他事情)。

您可以使用package.el而不是straight.el,但是package.el有许多严重的问题,而且一个特别相关的问题是让package.el加载您自己编写的本地包非常尴尬,特别是package.el绝对不支持安装后对包进行修改。

您也可以使用其他包管理器。我写了一个广泛的部分comparing straight.el to other package managers

以上是关于维护用户安装的elisp的Emacs自动加载文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何调试 elisp?

Emacs日常 2021/4/30

emacs/elisp:哈希(磅,数字符号,八角形)符号用于啥?

emacs elisp切换到缓冲区并关注

Elisp 11:动态模块

如何确定elisp中的操作系统?