如何覆盖Emacs中的默认模式文件?
我想用另一个文件覆盖默认的Emacs cc-mode.el
。在我.emacs
,我有以下行:如何覆盖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,我注意到在“加载路径”末尾没有“t”,所以我删除了它并开始工作。上面的“t”可能是问题的根源。非常奇怪的是,我在cc模式下试图解决的不正常行为也消失了。上面的“t”可能导致了某种其他错误。查看Emacs Wiki页面的emacswiki.org/emacs/LoadPath。
我发现此页面:gnu.org/software/emacs/manual/html_node/elisp/...。它通常表示,如果元素被添加,它将被添加到符号的前面,但是如果可选参数append不是零,则会在末尾添加元素。看来我在最后加入了。我不确定为什么这样打破了cc模式如此可怕,因为它在工作,直到前几天我转向emacs 25.2。它现在运作良好。
通常,像add-to-list中的APPEND这样的可选参数是布尔值,即只有当它们是'nil'或不'nil'时才是重要的。在这种情况下,我喜欢给它们描述性的值,例如'(add-to-list'load-path“foo”'append)'。 – jpkotta
您可以使用load-library
(或load
)至无条件加载图书馆,即使已经有过的功能(S)提供已提供(例如,通过另一个库或同一库的另一版本加载)。
只需将要载入的库放入load-path
开头附近的目录,然后再拨load-library
即可。
[但请注意,加载(或重新加载)库会取消已经评估过的defvars和defcustoms 而不是。例如,如果库foo.el
对foo-option
有一个不确定性,并且它已被加载,然后加载自己版本的foo.el
,该版本具有这种不适用但具有不同的默认值,那么您将被忽略。这是defvar
和defcustom
的行为的一部分。]
通常,如果在加载路径修改之前没有加载cc模式,您所做的工作就会奏效。 – phils
看着Emacs Wiki,我注意到在“加载路径”末尾没有“t”,所以我删除了它并开始工作。上面的“t”可能是问题的根源。非常奇怪的是,我在cc模式下试图解决的不正常行为也消失了。上面的“t”可能导致了某种其他错误。请参阅https://www.emacswiki.org/emacs/LoadPath以获取Emacs Wiki页面。 –
我发现这个网页:https://www.gnu.org/software/emacs/manual/html_node/elisp/List-Variables.html。它说'通常情况下,如果元素被添加,它会被添加到符号的前面,但是如果可选参数append不是零,它会被添加到最后。“看起来我是在最后添加的。我不确定为什么这样打破了cc模式如此可怕,因为它在工作,直到前几天我转向emacs 25.2。它现在运作良好。 –