如何覆盖 Emacs 中的默认模式文件?

How can I override the default mode file in Emacs?

我想用另一个文件覆盖默认的 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。但是,它没有加载我放在 /usr/home/smooth/emacs 中的 cc-mode.el 文件。相反,它继续使用默认的。

如何让 Emacs 使用我的 cc-mode.el 文件而不是默认文件?我已经使用 Google 进行了广泛搜索并尝试了 Emacs Wiki,但我找不到正确的页面。

或者,我如何设置 Emacs 为 c-mode 使用不同于系统默认值的另一个文件?我不介意将当前 cc-mode.el 重命名为另一个名称。

我的 Emacs 版本是 25.2。

查看 Emacs Wiki,我注意到 "load-path" 末尾没有 "t",所以我删除了它,它开始工作了。上面的 "t" 可能是问题的根源。非常奇怪的是,我试图绕过的 cc-mode 中的不当行为也消失了。上面的 "t" 可能导致了某种其他错误。请参阅 emacswiki。org/emacs/LoadPath Emacs Wiki 页面。

我找到了这个页面:gnu.org/software/emacs/manual/html_node/elisp/…。它表示通常情况下,如果添加了元素,则将其添加到符号的前面,但如果可选参数 append 为非零,则将其添加到末尾。看来我是在最后添加的。我不确定为什么会如此可怕地破坏 cc-mode,因为它一直在工作,直到几天前我切换到 emacs 25.2。它现在运行良好。

您可以使用load-library(或load无条件加载一个库,即使它提供的功能已经提供(例如,由另一个库或已经加载的同一库的另一个版本)。

只需将要加载的库放在 load-path 开头附近的目录中,然后调用 load-library.

[但是请注意,加载(或重新加载)库不会NOT 抵消可能已经评估过的 defvars 和 defcustoms。例如,如果库 foo.el 有一个 foo-option 的 defcustom 并且它已经被加载,然后你加载你自己的 foo.el 版本,它有这样一个 defcustom 但具有不同的默认值,你的将被忽略。这是 defvardefcustom.]

行为的一部分