Отключение режима зла для Nav в Emacs? Или какие-нибудь буферы только для чтения?

Я пытаюсь получить что-то вроде Nerd Tree в Emacs и нашел Nav, который похож на базовый файловый навигатор emacs, и мне это подходит.

Проблема в том, что когда я открываю Nav и переключаюсь в его буфер, режим зла все еще включен, и я должен нажать C-z если я хочу использовать какие-либо конкретные команды Nav (например, . за nav-toggle-hidden-files). И это меня раздражает.

Уже несколько часов я пытаюсь решить эту проблему, вставив

(require 'evil)
    (evil-mode 0)

везде в файлах Nav, но, очевидно, я делаю это неправильно.. И я почти уверен, что это произойдет снова при использовании других плагинов.. Как мне это сделать?

3 ответа

Решение

Ты хочешь nav-mode буферы открываются в состоянии Emacs, а не в нормальном состоянии зла. Я не знаю что nav-mode на самом деле вызывается, но сделайте следующее, соответственно изменив название режима:

(add-to-list 'evil-emacs-state-modes 'nav-mode)

Как описано в злой вики здесь, вы можете проверить evil-set-initial-state.

Вот соответствующая часть моего конфига emacs:

(evil-set-initial-state 'ibuffer-mode 'normal)
(evil-set-initial-state 'bookmark-bmenu-mode 'normal)
(evil-set-initial-state 'dired-mode 'emacs)
(evil-set-initial-state 'sunrise-mode 'emacs)

Однако, не облегчает тот факт, что я когда-нибудь хотел бы иметь привязки клавиш vim в этих режимах...

Вам нужен "крючок", который сообщит Emacs, при каких условиях вы хотите, чтобы конкретный режим был активным или нет.

Я не пользуюсь evil или же nav режимы, но вы хотите что-то очень похожее на следующую строку в вашем .emacs:

(add-hook 'nav-mode-hook 'disable-evil-mode)

Эта команда сообщает Emacs, что когда режим (чьи хуки перечислены в nav-mode-hook) активен, запустите функцию disable-evil-mode, Скорее всего, вам придется изменить либо имя списка перехвата, либо имя функции обратного вызова в соответствии с тем, как nav-mode а также evil-mode реализованы.

nav-mode-hook это мое предположение в чем nav-mode вызовет свой список хуков. Если это не работает, проверьте nav-mode документацию, ищите как добавить хуки.

disable-evil-mode это любая функция, которую вы вызываете, чтобы отключить режим зла. Проверьте документацию по злому режиму на предмет реального имени функции.

Другие вопросы по тегам