2011-04-15 2 views
2

Я разрабатываю a mode for Emacs, и каждый раз, когда я переключаюсь на его буфер, гадюка включается. Я изменил viper-mode на trace, где вызывается viper-mode, и неожиданно set-viper-state-in-major-mode вызывается путем запуска viper-post-command-hooks, установленного на ноль , Любая идея о том, что происходит?Как я могу заставить emacs перестать загружать viper-mode?

Спасибо!


EDIT: На благо всех живых существ, вот то, что я узнал: в соответствии с указаниями Трей, я начал с Emacs -Q и вручную загружаются как гадюка и мой пакет. Поскольку я мог воспроизвести ошибку, проблема была в одном из этих пакетов. После поэтапной фильтрации я обнаружил, что причиной этой проблемы являются неистовые (kill-all-local-variables).

+0

Вы добавили что-нибудь в сообщение-крюк, который может запускать viper-mode? – vpit3833

+0

Нет, совсем нет. – konr

ответ

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

Попробуйте прокомментировать любые ссылки на режим viper в вашем .emacs. Я не попадаю в режим гадюки, если я не начну играть с режимом гадюки, прежде чем я изменю свой новый режим.

Может быть, там еще делается с этим утверждением, чем вы думаете:

 
    (use-local-map ecoli-map) 

Попробуйте изменить некоторые из ваших привязок на вашей карте. например. j в C-j и k в C-k.

Возможно, emacs запутался?

3

Функция kill-all-local-variables будет работать все функции, добавленные к change-major-mode-hook, это распространенный способ для глобальных второстепенных режимов для инициализации себя. Например, глобальный замок шрифта и глобальный режим cwarn использовать это.

Я не использовал viper сам, но, скорее всего, он использует этот механизм. Конечно, вам все равно пришлось бы включить его в файл инициализации, так или иначе, поэтому, если вы просто прекратите это делать, это также решит вашу проблему.

0

Попробуйте удалить конфигурационный файл ~/.viper, а также проверьте свои .custom.el на наличие настроек, которые могут привести к выходу гадюки в ваш основной режим (или по всему миру).

Смежные вопросы