Mam zestaw kluczowych powiązań, które używam dla obu web-modei php-modew trybie wstawiania (zła). Więc nie mogę użyć set-local-mapani czegoś takiego. Ponieważ w trybie normalnym te same klawisze będą wywoływać inne polecenia. Więc wiązania muszą być aktywne evil-insert-state-maptylko w.
Mam następujące:
(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)))
Tak więc za każdym razem web-modelub php-modepodczas ładowania te powiązania klawiszy będą aktywowane.
Problem polega na tym: Załóżmy, że mam dwa otwarte bufory, jeden w drugim, php-modea drugi w web-mode. Gdy web-modebufor jest bieżącym buforem i przełączam się na inny bufor, który jest w środku php-mode, web-modepowiązania są nadal aktywne w php-modebuforze.
Próbowałem rozwiązać ten problem za pomocą (add-hook 'web-mode-hook [...])i (add-hook 'php-mode-hook [...])zamiast konfigurowania powiązań eval-after-load. Ale to rozwiązanie nie działa w tej sytuacji.
Jakieś sugestie? Byłbym bardzo wdzięczny.
evil-define-key.