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