2011-04-15 31 views
2

我正在開發a mode for Emacs,每次我切換到它的緩衝區時,viper都會打開。我已經將viper模式修改爲trace,其中viper模式被調用,而令人驚訝的是set-viper-state-in-major-mode通過運行viper-post-command-hooks來調用,設置爲零。對發生了什麼的任何想法?如何讓emacs停止加載毒蛇模式?

謝謝!


編輯:一切衆生的利益,這裏是我發現:通過三分球的指示,我開始用emacs的-Q和手動加載兩種蝮蛇,我的包。由於我可以重現這個錯誤,問題出現在這些軟件包中的一個上。在逐行過濾之後,我發現看起來很不尋常的(kill-all-local-variables)導致了這個問題。

+0

你有沒有添加任何可能觸發viper模式的post-command-hook? – vpit3833 2011-04-15 03:01:01

+0

不,完全沒有。 – konr 2011-04-15 04:39:15

回答

4

初始化中有東西引起它。

首先嚐試開始不使用您的.emacsemacs -q。如果問題依然存在,那麼觸發器位於site-start.el。因此,請與安裝Emacs的人交談,讓他們刪除那裏的定製。您也可以始終使用啓動選項-Q以避免加載site-start.el

如果問題不在site-start.el,你不覺得它在你的.emacs,它可能是在自定義default.el文件,它可以被加載防止加入:

(setq inhibit-default-init t) 

到你的.emacs

如果您仍然有問題,那麼我99%確定它在您的.emacs中。

要100%確定,請嘗試emacs -Q,它可以在不進行自定義的情況下運行Emacs。如果問題仍然存在,請下載並安裝您自己的Emacs b/c,那麼您肯定無法相信您正在使用的安裝。

所以,現在如果你相信它在你的.emacs,開始切割出的部分你.emacs,或者在你的.emacs(error "frog")引入一個錯誤,並逐步排除你.emacs的這部分導致了問題。

g'luck

0

嘗試在您的.emacs中註釋任何對毒蛇模式的引用。我不會進入v蛇模式,除非我在評估新模式之前開始使用v蛇模式。

 
    (use-local-map ecoli-map) 

試圖改變你的一些結合在你的地圖:

也許還有更多正在這個說法比你想象完成。例如。 j到C-j,k到C-k。

也許emacs變得困惑?

3

功能kill-all-local-variables將運行添加到change-major-mode-hook所有功能,這是全球次要模式的常用方法來初始化自己。例如,全局字體鎖全局cwarn模式使用此。

我自己並沒有使用viper,但有可能它使用這種機制。當然,你仍然不得不在init文件中啓用它,所以如果你只是停止這樣做,它也會解決你的問題。

0

嘗試移除您的~/.viper配置文件,並檢查您的.custom.el是否有可能會在主要模式(或全局)中啓用毒蛇的設置。