在我的计算机上,我安装了一个 Emacs 插件,它与 Debian 软件包系统一起安装,但是这个插件已经过时了,我正在尝试使用 package-install 将它安装在我的主目录中。我已经安装了一个较新的版本,但是如果我检查加载了哪个版本,则旧版本是。
我尝试load-file
了新版本的全局路径,但它仍然加载旧版本。
如何强制加载新的负载?请想象一下,我不是计算机的系统管理员,我无法卸载任何软件包。
在我的计算机上,我安装了一个 Emacs 插件,它与 Debian 软件包系统一起安装,但是这个插件已经过时了,我正在尝试使用 package-install 将它安装在我的主目录中。我已经安装了一个较新的版本,但是如果我检查加载了哪个版本,则旧版本是。
我尝试load-file
了新版本的全局路径,但它仍然加载旧版本。
如何强制加载新的负载?请想象一下,我不是计算机的系统管理员,我无法卸载任何软件包。
当一个库包含多个文件时,可以假设一个主文件将根据需要加载其他文件;但是如果该目录不在目录中,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 文件中手动初始化它们。
尝试这个
(defun please-load-my-stuff ()
(interactive)
(load "PATH-TO-STUFF/STUFF))
当可以访问 init 时,只需将表单“(load ...)”放在那里。如果需要多个文件,load-path
也必须以这种方式设置 - 在加载之前,以便可以访问其他所需的文件。