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

Srv*_*v19 4 emacs elisp

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

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

但是,我因以下回溯而失败:

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)
Run Code Online (Sandbox Code Playgroud)

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

And*_*ter 5

您可以使用包生成自动加载:

(package-generate-autoloads "async" "~/.emacs.d/elpa/async-1.9.3/")
Run Code Online (Sandbox Code Playgroud)

它在内部调用 update-directory-autoloads。我发现如果您手动将已安装的软件包替换为不同的版本,并希望以与 package.el 在安装时相同的方式生成其自动加载,它会很有用。

另见这个问题:https : //emacs.stackexchange.com/questions/33627/how-to-generate-and-activate-autoloads-for-local-packages/41274