Ho una serie di combinazioni di tasti che uso per entrambi web-mode
e php-mode
in modalità di inserimento (del male). Quindi non posso usare set-local-map
o qualcosa del genere. Perché in modalità normale, gli stessi tasti chiameranno quindi altri comandi. Quindi i binding devono essere attivi evil-insert-state-map
solo in.
Ho il seguente:
(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)))
Quindi, ogni volta web-mode
che php-mode
viene caricato, questi collegamenti chiave verranno attivati.
Il problema è: supponiamo che io abbia due buffer aperti, uno in php-mode
e l'altro in web-mode
. Quando il web-mode
buffer è il buffer corrente e passo a un altro buffer che è in php-mode
, i web-mode
binding sono ancora attivi all'interno del php-mode
buffer.
Ho provato a risolvere questo problema utilizzando (add-hook 'web-mode-hook [...])
e (add-hook 'php-mode-hook [...])
invece di impostare i binding in eval-after-load
. Ma quella soluzione non funziona in questa situazione.
Eventuali suggerimenti? Lo apprezzerei molto.
evil-define-key
.