如何用我的init文件指定的.el文件替换Emacs目录中的.el文件?

3
所以list-load-path-shadows告诉我们哪些 .el 文件会被其他文件遮盖。大多数情况下,我emacs分发中的本地文件会遮盖我在我的初始化文件中预加载的更新文件。
例如,我已经克隆了cedet存储库并始终保持最新状态,但是Emacs 23.4内部的cedet文件会遮盖我在初始化文件中加载的更新cedet文件。
我无法在 /lisp/cedet 目录中覆盖克隆cedet的包,因为像eieio或speedbar这样的包仍然不会被覆盖,因为它们位于不同的文件夹中。现在的临时解决方案是删除捆绑在emacs中的旧包,以便优先使用通过我的初始化文件加载的包。
是否有一种方法可以优先加载我的初始化文件而不是默认的emacs包?
2个回答

2
如果你使用CEDET 1.0或1.1版本,则基本的安装指令可以正常工作,因为很多名称不同。如果你使用从bzr trunk获取的CEDET版本,它使用新的命名方案,那么你需要使用以下指令:
(load-file "/home/user/cedet/cedet-devel-load.el")

这将执行必要的操作,从加载路径中删除内置的CEDET,并将新的CEDET安装到您的加载路径上。

有关更多信息,请参阅CEDET bzr trunk中的INSTALL文件。


我想这是唯一的长期解决方案。以前我会手动从emacs中删除捆绑的CEDET,并在打开cc-mode文件时加载完整的CEDET。然而,这会导致其他混乱的事情发生。 - octi

1
将 cedet 存储库目录放在您的 load-path 前面,Emacs 将从 cedet 区域中获取它...

现在我的load-path像这样添加了.emacs.d的所有子目录: (progn (cd "/.emacs.d/")(normal-top-level-add-subdirs-to-load-path)) 而cedet位于/.emacs.d/plugins/cedet下,我只在cc-mode触发时加载它,因为它需要几秒钟的时间来加载(尽管是字节编译的),而且我并不总是需要它。但是,当需要时,我希望它能够覆盖Emacs自带的cedet。 - octi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接