2017-05-05 80 views
1

我想用另一個文件覆蓋默認的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。

+0

通常,如果在加載路徑修改之前沒有加載cc模式,您所做的工作就會奏效。 – phils

+0

看着Emacs Wiki,我注意到在「加載路徑」末尾沒有「t」,所以我刪除了它並開始工作。上面的「t」可能是問題的根源。非常奇怪的是,我在cc模式下試圖解決的不正常行爲也消失了。上面的「t」可能導致了某種其他錯誤。請參閱https://www.emacswiki.org/emacs/LoadPath以獲取Emacs Wiki頁面。 –

+0

我發現這個網頁:https://www.gnu.org/software/emacs/manual/html_node/elisp/List-Variables.html。它說'通常情況下,如果元素被添加,它會被添加到符號的前面,但是如果可選參數append不是零,它會被添加到最後。「看起來我是在最後添加的。我不確定爲什麼這樣打破了cc模式如此可怕,因爲它在工作,直到前幾天我轉向emacs 25.2。它現在運作良好。 –

回答

0

看着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。它現在運作良好。

+0

通常,像add-to-list中的APPEND這樣的可選參數是布爾值,即只有當它們是'nil'或不'nil'時纔是重要的。在這種情況下,我喜歡給它們描述性的值,例如'(add-to-list'load-path「foo」'append)'。 – jpkotta

0

您可以使用load-library(或load)至無條件加載圖書館,即使已經有過的功能(S)提供已提供(例如,通過另一個庫或同一庫的另一版本加載)。

只需將要載入的庫放入load-path開頭附近的目錄,然後再撥load-library即可。

[但請注意,加載(或重新加載)庫會取消已經評估過的defvars和defcustoms 而不是。例如,如果庫foo.elfoo-option有一個不確定性,並且它已被加載,然後加載自己版本的foo.el,該版本具有這種不適用但具有不同的默認值,那麼您將被忽略。這是defvardefcustom的行爲的一部分。]