在我的计算机中,我有一个安装了Debian软件包系统的Emacs插件,但是这个插件已经过时了,我正在尝试使用package-install将它安装在我的主目录中。我已经安装了一个较新的版本,但是如果我检查加载了哪个版本,那么旧版本就是。
我尝试使用load-file
和新版本的全局路径,但它仍会加载旧版本。
如何强制加载新的?请假设我不是计算机的系统管理员,我无法卸载任何软件包。
答案 0 :(得分:1)
当库包含多个文件时,可以假设单个主文件将根据需要加载其他文件;但是如果目录不在load-path
中,那么它将无法加载它们(或者至少不能加载它们),所以load-file
本身就不会这样做
我自己并没有太多地使用package.el,但我真的认为它会管理加载路径,使得它优先于site-lisp
中的任何内容(这可能是debian包正在安装东西。)
尝试运行emacs --no-site-lisp
并检查是否加载了正确的库版本。如果您不想从站点库中获取任何内容,那么这甚至可能是您的解决方案。
如果可行,请在正常启动Emacs后检查load-path
变量。除非给出绝对路径,否则Emacs将按顺序查看这些目录,并使用匹配的第一个目录。我猜你的site-lisp目录出于某种原因出现在package.el创建的目录之前。
或许包装根本没有正确安装。
所有人都说,在Emacs 24.3中至少(package-initialize)
被自动调用,我认为你不应该手动加载任何东西。检查package-load-list
变量。
修改强>
关于最后一点,请参阅cannot open load dired-details。
当时我没有注意到Emacs在之后加载了用户初始化文件时没有初始化包,所以你通常 需要手动初始化它们在你的init文件中。
答案 1 :(得分:0)
试试这个
(defun please-load-my-stuff ()
(interactive)
(load "PATH-TO-STUFF/STUFF))
当有权访问init时,只需将表单“(load ...)”放在那里。
如果需要多个文件,则必须同样设置load-path
- 在加载之前,以便可以访问其他所需文件。