我想用另一个文件覆盖默认的Emacs cc-mode.el
。在我的.emacs
中,我有以下几行:
(add-to-list 'load-path "/usr/home/smooth/emacs" t)
这适用于加载本地Emacs配置文件。例如
(require 'go-mode-autoloads)
可以从上面的目录加载go-mode.el
。
我尝试将所需的cc-mode.el
文件放入上面的目录中,希望它会覆盖默认的Emacs c-mode
。但是,它没有加载我放在cc-mode.el
中的/usr/home/smooth/emacs
文件。相反,它继续使用默认值。
如何让Emacs使用我的cc-mode.el
文件而不是默认文件?我已经广泛搜索过Google并尝试了Emacs Wiki,但我找不到正确的页面。
或者,如何设置Emacs使用c-mode
的其他文件而不是系统默认值?我不介意将当前cc-mode.el
重命名为其他名称。
我的Emacs版本是25.2。
答案 0 :(得分:0)
看着Emacs Wiki,我注意到“load-path”末尾没有“t”,所以我删除了它并开始工作。上面的“t”可能是问题的根源。非常奇怪的是,我试图绕过的cc模式中的不当行为也消失了。上述“t”可能导致某种其他错误。有关Emacs Wiki页面,请参阅emacswiki.org/emacs/LoadPath。
我找到了这个页面:gnu.org/software/emacs/manual/html_node/elisp/...它说正常情况下,如果添加了元素,它将被添加到符号的前面,但如果可选参数append是非零,则在末尾添加它。看来我最后还是补充道。我不确定为什么会破坏cc模式如此可怕,因为它工作直到我几天前切换到emacs 25.2。它现在运作良好。
答案 1 :(得分:0)
您可以使用 load-library
(或load
)无条件加载库,即使它提供的功能已经存在已提供(例如,已由另一个库或已加载的同一库的其他版本)。
只需将要加载的库放在load-path
开头附近的目录中,然后调用load-library
。
[但是,请注意,加载(或重新加载)库 NOT 会取消可能已经评估过的defvars和defcustoms。例如,如果库foo.el
具有foo-option
的defcustom且已加载,则您加载自己的foo.el
版本,其具有此类defcustom但具有不同的默认值,你的将被忽略。这是defvar
和defcustom
行为的一部分。]