I tem um conjunto de teclas que usam tanto para web-mode
e php-mode
no modo de inserção (de mau). Então, eu não posso usar set-local-map
ou algo assim. Porque no modo normal, as mesmas teclas chamarão outros comandos. Portanto, as ligações precisam estar ativas evil-insert-state-map
apenas.
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-mode
ou php-mode
está sendo carregado, essas teclas será ativado.
O problema é: Suponha que eu tenha dois buffers abertos, um no php-mode
e outro no web-mode
. Quando o web-mode
buffer é o buffer atual e eu alterno para outro buffer que esteja php-mode
, as web-mode
ligações ainda estão ativas dentro do php-mode
buffer.
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.
fonte
evil-define-key
.