Mam zestaw kluczowych powiązań, które używam dla obu web-mode
i php-mode
w trybie wstawiania (zła). Więc nie mogę użyć set-local-map
ani 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-map
tylko 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-mode
lub php-mode
podczas ładowania te powiązania klawiszy będą aktywowane.
Problem polega na tym: Załóżmy, że mam dwa otwarte bufory, jeden w drugim, php-mode
a drugi w web-mode
. Gdy web-mode
bufor jest bieżącym buforem i przełączam się na inny bufor, który jest w środku php-mode
, web-mode
powiązania są nadal aktywne w php-mode
buforze.
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.
źródło
evil-define-key
.