Tengo un conjunto de combinaciones de teclas que uso para ambos web-mode
y php-mode
en modo de inserción (de Evil). Entonces no puedo usar set-local-map
o algo. Porque en modo normal, las mismas teclas llamarán a otros comandos. Por lo tanto, los enlaces solo deben estar activos evil-insert-state-map
.
Tengo lo siguiente:
(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)))
Así que cada vez web-mode
o php-mode
se carga, se activarán estas asociaciones de teclas.
El problema es: supongamos que tengo dos buffers abiertos, uno en el php-mode
y el otro en web-mode
. Cuando el web-mode
búfer es el búfer actual y cambio a otro búfer que está adentro php-mode
, los web-mode
enlaces todavía están activos dentro del php-mode
búfer.
Intenté resolver este problema usando (add-hook 'web-mode-hook [...])
y en (add-hook 'php-mode-hook [...])
lugar de configurar los enlaces eval-after-load
. Pero esa solución no funciona en esta situación.
¿Alguna sugerencia? Yo realmente lo apreciaría.
fuente
evil-define-key
.