2

私はEmacsのモードを開発していて、そのバッファーに切り替えるたびに、viperがオンになります。viper-modeが呼び出されている場所をトレースするように、viper -modeを変更しました。驚くべきことに、set-viper-state-in-major-modeは、nilに設定されたviper-post-command-hooksを実行することによって呼び出されます。何が起こっているのかについて何か考えはありますか?

ありがとう!


編集:すべての存在の利益のために、これが私が見つけたものです:Treyの指示に従って、私は-Qでemacsを開始し、viperと私のパッケージの両方を手動でロードしました。バグを再現できたので、問題はこれらのパッケージの1つにありました。行ごとのフィルタリングの後、私は無害に見える(kill-all-local-variables)が問題を引き起こしていることを発見しました。

4

4 に答える 4

4

初期化にはそれを引き起こしている何かがあります。

まず、を使わずに始めてみてください.emacs emacs -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

于 2011-04-15T05:10:02.790 に答える
3

この関数は、にkill-all-local-variables追加されたすべての関数を実行します。これは、グローバルマイナーモードがそれ自体を初期化するchange-major-mode-hookための一般的な方法です。たとえば、グローバルフォントロックグローバルcwarnモードはこれを使用します。

私自身はバイパーを使ったことがありませんが、このメカニズムを使っている可能性があります。もちろん、どういうわけか、initファイルでそれを有効にする必要があったので、単にこれをやめれば、問題も解決します。

于 2011-04-15T05:56:40.300 に答える
0

.emacsでviperモードへの参照をコメントアウトしてみてください。新しいモードを評価する前にバイパーモードで遊んでみないと、バイパーモードになりません。

たぶん、あなたが思っている以上に、この声明で行われていることがあります:

  (use-local-map ecoli-map)

マップ内のバインドの一部を変更してみてください。例えば。jからCjおよびkからCk。

たぶんemacsは混乱していますか?

于 2011-04-15T04:45:21.567 に答える
0

~/.viper構成ファイルを削除してみてください。また.custom.el、メジャーモード(またはグローバル)でviperを動作させる可能性のある設定を確認してください。

于 2011-04-15T07:33:20.530 に答える