gpt4 book ai didi

emacs - 如何为 elpa 包生成自动加载?

转载 作者:行者123 更新时间:2023-12-04 23:00:31 30 4
gpt4 key购买 nike

我已经使用 elpa 安装了许多软件包,并希望为它们适本地生成自动加载。为此,我添加到我的 init 文件中:

(apply 'update-directory-autoloads (directory-files package-user-dir t "[^\.].*"))

但是,我因以下回溯而失败:
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
expand-file-name(nil "/build/buildd/emacs24-24.3+1/debian/build-x/lisp")
autoload-generated-file()
autoload-find-generated-file()
update-directory-autoloads("/home/survivor/.emacs.d/elpa/ahg-20140818.130")
eval((update-directory-autoloads "/home/survivor/.emacs.d/elpa/ahg-20140818.130") nil)
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp nil nil)

我试图这样做的方式是错误的吗?我应该为我的每个包裹都加上 require 吗?

最佳答案

TL;DR: 您可能需要将 (package-initialize) 添加到您的 init 文件中。

您不需要为您的包生成自动加载。包管理器在安装时自动执行此操作。您将在 -autoloads.el 目录的包目录中找到相应的 ~/.emacs.d/elpa/ 文件。

您也不需要要求每个包。然而,与其他所有 Emacs Lisp 文件一样,已安装包的自动加载文件需要在其中包含的自动加载声明可用之前被 加载 (令人困惑,我知道)。

当 Emacs 包管理器“激活”一个包时,它会自动加载一个包的自动加载文件。 Emacs 还会自动初始化包管理器并激活所有已安装的包,但只有 你的 init.el 被处理之后。

因此,在加载 init.el 时,包(以及它们的自动加载)是 而不是 可用,因此您不能在 init.el 中使用包。

为了解决这个问题,您可以将所有设置推迟到 after-init-hook ,或者通过在 init 文件的顶部添加 (package-initialize) 来强制 Emacs 初始化包管理器。

关于emacs - 如何为 elpa 包生成自动加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26348561/

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