I tem um conjunto de teclas que usam tanto para web-modee php-modeno modo de inserção (de mau). Então, eu não posso usar set-local-mapou algo assim. Porque no modo normal, as mesmas teclas chamarão outros comandos. Portanto, as ligações precisam estar ativas evil-insert-state-mapapenas.
Eu tenho o seguinte:
(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)))
Então, toda vez web-modeou php-modeestá sendo carregado, essas teclas será ativado.
O problema é: Suponha que eu tenha dois buffers abertos, um no php-modee outro no web-mode. Quando o web-modebuffer é o buffer atual e eu alterno para outro buffer que esteja php-mode, as web-modeligações ainda estão ativas dentro do php-modebuffer.
Tentei resolver esse problema usando (add-hook 'web-mode-hook [...])e em (add-hook 'php-mode-hook [...])vez de configurar as ligações eval-after-load. Mas essa solução não funciona nessa situação.
Alguma sugestão? Eu realmente apreciaria isto.
evil-define-key.