У меня есть набор привязок клавиш, которые я использую для обоих 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.