2011-04-15 58 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是否有可能会在主要模式(或全局)中启用毒蛇的设置。