从特定位置加载插件

时间:2013-06-18 07:33:52

标签: emacs

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

我尝试使用load-file和新版本的全局路径,但它仍会加载旧版本。

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

2 个答案:

答案 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 - 在加载之前,以便可以访问其他所需文件。