J'ai un ensemble de raccourcis clavier que j'utilise pour les deux web-modeet php-modeen mode insertion (de Evil). Je ne peux donc pas utiliser set-local-mapou quelque chose. Parce qu'en mode normal, les mêmes touches appellent alors d'autres commandes. Les liaisons doivent donc être actives evil-insert-state-mapuniquement.
J'ai les éléments suivants:
(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)))
Ainsi, à chaque fois web-modeou en php-modecours de chargement, ces raccourcis clavier seront activés.
Le problème est le suivant: supposons que j'ai deux tampons ouverts, l'un dans l'autre php-modeet l'autre dans web-mode. Lorsque le web-modetampon est le tampon actuel et que je passe à un autre tampon qui est dedans php-mode, les web-modeliaisons sont toujours actives à l'intérieur du php-modetampon.
J'ai essayé de résoudre ce problème en utilisant (add-hook 'web-mode-hook [...])et (add-hook 'php-mode-hook [...])au lieu de configurer les liaisons dans eval-after-load. Mais cette solution ne fonctionne pas dans cette situation.
Aucune suggestion? J'apprécierai vraiment cela.
evil-define-key.