Ich habe eine Reihe von Tastenkombinationen, die ich sowohl für web-mode
als auch php-mode
im Einfügemodus (von Evil) verwende. Also kann ich nicht benutzen set-local-map
oder so. Denn im normalen Modus rufen dieselben Tasten dann andere Befehle auf. Die Bindungen müssen also evil-insert-state-map
nur in aktiv sein.
Ich habe folgendes:
(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)))
Also jedes Mal , web-mode
oder php-mode
geladen wird, werden diese Tastenbelegungen aktiviert.
Das Problem ist: Angenommen, ich habe zwei offene Puffer, einen im php-mode
und einen im web-mode
. Wenn der web-mode
Puffer der aktuelle Puffer ist und ich zu einem anderen Puffer wechsle, der sich im Puffer befindet php-mode
, sind die web-mode
Bindungen im php-mode
Puffer noch aktiv .
Ich habe versucht, dieses Problem zu lösen, indem ich die Bindungen in (add-hook 'web-mode-hook [...])
und (add-hook 'php-mode-hook [...])
anstelle von eingerichtet habe eval-after-load
. Aber diese Lösung funktioniert in dieser Situation nicht.
Irgendwelche Vorschläge? Ich würde dies sehr begrüssen.
quelle
evil-define-key
.