0

在我的计算机上,我安装了一个 Emacs 插件,它与 Debian 软件包系统一起安装,但是这个插件已经过时了,我正在尝试使用 package-install 将它安装在我的主目录中。我已经安装了一个较新的版本,但是如果我检查加载了哪个版本,则旧版本是。

我尝试load-file了新版本的全局路径,但它仍然加载旧版本。

如何强制加载新的负载?请想象一下,我不是计算机的系统管理员,我无法卸载任何软件包。

4

2 回答 2

1

当一个库包含多个文件时,可以假设一个主文件将根据需要加载其他文件;但是如果该目录不在目录中,load-path那么它将无法加载它们(或者至少不是那些版本),所以load-file它自己并不能解决问题。

我自己并没有过多地使用 package.el,但我真的认为它会管理加载路径,使其优先于site-lisp其中的任何内容(大概是 debian 包正在安装东西的地方。)

尝试运行emacs --no-site-lisp并检查是否加载了正确版本的库。如果您不想要站点库中的任何内容,那么这甚至可能是您的解决方案。

如果可行,则load-path在正常启动 Emacs 后检查变量。除非给出绝对路径,否则 Emacs 将按顺序查看这些目录,并使用第一个匹配的目录。我猜由于某种原因,您的 site-lisp 目录出现在 package.el 创建的目录之前。

或者该软件包可能根本没有正确安装。

话虽如此,至少在 Emacs 24.3 中(package-initialize)是自动调用的,我认为您不需要手动加载任何内容。检查package-load-list变量。

编辑:

最后一点,请参阅无法打开加载 dired-details

当时我没有注意到 Emacs 直到加载用户 init 文件后才初始化包,因此您通常需要在 init 文件中手动初始化它们。

于 2013-06-18T09:10:28.310 回答
0

尝试这个

(defun please-load-my-stuff ()
  (interactive)
  (load "PATH-TO-STUFF/STUFF))

当可以访问 init 时,只需将表单“(load ...)”放在那里。如果需要多个文件,load-path也必须以这种方式设置 - 在加载之前,以便可以访问其他所需的文件。

于 2013-06-18T08:12:35.363 回答