У мене є набір ключових прив’язок, який я використовую як для режиму вставки, так web-mode
і php-mode
для режиму вставки (зла). Так що я не можу використовувати set-local-map
чи щось. Тому що в звичайному режимі ті ж клавіші будуть викликати інші команди. Тому прив'язки повинні бути активними evil-insert-state-map
лише.
У мене є таке:
(eval-after-load 'php-mode
'(progn
(define-key evil-insert-state-map
(kbd "C-<next>") (lambda () (interactive) (insert " = ")))
(define-key evil-insert-state-map
(kbd "C-<prior>") (lambda () (interactive) (insert "->")))))
(eval-after-load 'web-mode
'(progn
(define-key evil-insert-state-map
(kbd "C-<next>") 'zencoding-expand-yas)
(define-key evil-insert-state-map
(kbd "C-<prior>") 'zencoding-expand-line)))
Тому щоразу web-mode
або php-mode
завантажуючись, ці ключі прив'язуються до активізації.
Проблема полягає в тому, що припустимо, у мене є два відкритих буфера, один в php-mode
і інший в web-mode
. Коли web-mode
буфер є поточним буфером, і я перемикаюсь на інший буфер, який є php-mode
, web-mode
прив'язки все ще активні всередині php-mode
буфера.
Я намагався вирішити цю проблему, використовуючи (add-hook 'web-mode-hook [...])
і (add-hook 'php-mode-hook [...])
замість того, щоб встановлювати прив’язки eval-after-load
. Але це рішення не працює в цій ситуації.
Будь-які пропозиції? Я б дуже цінував це.
evil-define-key
.