Emacs 从特定位置加载插件

Emacs 从特定位置加载插件,emacs,Emacs,在我的计算机中,我有一个与Debian软件包系统一起安装的Emacs插件,但是这个插件已经过时了,我正试图用软件包安装在我的主目录中。我已经安装了一个较新的版本,但是如果我检查加载了哪个版本,旧版本会被删除 我尝试了加载文件和新版本的全局路径,但它仍然加载旧版本 我怎样才能强制新的一个负载?请想象一下,我不是计算机的系统管理员,无法卸载任何软件包。试试这个 (defun please-load-my-stuff () (interactive) (load "PATH-TO-STUFF/

在我的计算机中,我有一个与Debian软件包系统一起安装的Emacs插件,但是这个插件已经过时了,我正试图用软件包安装在我的主目录中。我已经安装了一个较新的版本,但是如果我检查加载了哪个版本,旧版本会被删除

我尝试了加载文件和新版本的全局路径,但它仍然加载旧版本

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

试试这个

(defun please-load-my-stuff ()
  (interactive)
  (load "PATH-TO-STUFF/STUFF))
当有权访问init时,只需将form“(load…)放在那里。
如果需要多个文件,
加载路径
也必须这样设置-加载前,以便可以访问其他所需文件。

当库包含多个文件时,可以假定一个主文件将根据需要加载其他文件;但是如果目录不在
加载路径
中,那么它将无法加载它们(或者至少不能加载那些版本),因此
单独加载文件
不会起作用

我自己并不怎么使用package.el,但我真的认为它会管理加载路径,使其优先于
site lisp
中的任何内容(这大概是debian软件包安装东西的地方)

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

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

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

综上所述,在Emacs24.3中,至少会自动调用
(包初始化)
,我认为您不需要手动加载任何内容。检查
包裹装载列表
变量

编辑:

关于最后一点,请参阅


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

您尝试加载的库是否只包含一个文件?或者有多个文件?另外,如果您指定要引用的库(和debian包),也会有所帮助。该库是“yasnippet”。旧版本只有一个文件(0.6),而新版本有多个文件(我通过Emacs 24上的package install安装了它)。感谢您的回答:我检查了
加载路径的值,它首先有一个绝对路径,指向下载的版本,而不是站点lisp one。我在
加载路径
中有很多路径,但所有基于家庭的路径都在基于dpkg的路径之前。另外,
package load list
变量被设置为
(all)
,所以我不知道问题出在哪里,
M-x locate library RET yasnippet RET
告诉你什么?它说库位于我的主目录(软件包安装版本!),但是
M-x yas/about
说的是0.6.1b版本(Debian软件包一)当您运行
emacs--no site lisp
时安装了吗?它是否使用了软件包安装版本?我怀疑有人试图在软件包初始化之前加载yasnippet。运行
emacs--no site lisp--debug init
。当抛出错误时,应该会得到一个回溯,它会告诉您发生了什么。Th谢谢你的回答。我不是Emacs配置专家,你可以为我的问题想一想……我需要把代码放在哪里?我想它应该放在我的
.Emacs
文件中,不是吗?我从哪里“调用”这个函数?