如何覆盖 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 但具有不同的默认值,你的将被忽略。这是 defvar
和 defcustom
.]
行为的一部分
我想用另一个文件覆盖默认的 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 但具有不同的默认值,你的将被忽略。这是 defvar
和 defcustom
.]