gpt4 book ai didi

emacs - 如何使用自动加载正确加载自定义配置?

转载 作者:行者123 更新时间:2023-12-04 17:27:30 26 4
gpt4 key购买 nike

我在我的 emacs 配置中使用以下结构:对于我使用的每种编程模式,我在一个名为 programming-mode-config.el 的文件中维护配置。 (所以python配置将进入python-mode-config.el等)。

早些时候,我曾经在我的 init.el 中需要这些文件中的每一个。这种方法的缺点是我的启动时间很长。所以这个周末,我坐下来将所有需求转换为自动加载。现在我的 init 文件如下所示:

(autoload 'python-mode "python-mode-config" "Load python config" t)

因此,在打开 python 文件之前,不会加载 python 配置。这有助于将我的启动时间缩短到大约 1 秒,但它并非在所有情况下都能正常工作。例如,
(autoload 'erc "erc-mode-config" "Load configuration for ERC" t)

根本不加载我的 erc 调整。查看自动加载文档,它指出:
Define FUNCTION to autoload from FILE.
...
If FUNCTION is already defined other than as an autoload,
this does nothing and returns nil.

所以我猜测 erc 配置没有加载,因为 ERC 是 emacs 内置的,而 python-mode 是我使用的插件。有什么方法可以让我的 erc 配置仅在我实际使用 erc 时加载?我看到的唯一另一种选择是使用 eval-after-load,但是将我定制的每一点都放入 eval-after-load 中会相当痛苦。

恐怕也可能是我没有正确理解自动加载。任何帮助,将不胜感激。

最佳答案

autoload旨在用于从某个文件加载函数,而不是加载附加功能 - 这就是您想要做的事情。

使用 eval-after-load 反而:

(eval-after-load "erc" '(load "erc-mode-config"))

这告诉 Emacs 加载 erc-mode-config库后 "erc"文件已加载 - 这就是您想要的。您也可以使用 '(require 'erc-mode-config)如果您有 provide里面的语句。
autoload的正确使用是加载包含符号的实际文件。所以,通过拥有
(autoload 'erc "erc-mode-config" "Load configuration for ERC" t)

你告诉 Emacs 找到函数 erc通过加载 "erc-mode-config"图书馆,这不是 erc函数被定义。此外,文档字符串用于相关函数,因此 autoload上面的语句使 erc 的帮助字符串是 "Load configuration for ERC" - 这也是不正确的。

我猜你的第一个 autoload示例有效,因为您有一个 (require 'python)配置文件中的语句......但这只是一个猜测。

关于emacs - 如何使用自动加载正确加载自定义配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6162104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com