Ho una serie di combinazioni di tasti che uso per entrambi web-modee php-modein modalità di inserimento (del male). Quindi non posso usare set-local-mapo qualcosa del genere. Perché in modalità normale, gli stessi tasti chiameranno quindi altri comandi. Quindi i binding devono essere attivi evil-insert-state-mapsolo 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-modeche php-modeviene caricato, questi collegamenti chiave verranno attivati.
Il problema è: supponiamo che io abbia due buffer aperti, uno in php-modee l'altro in web-mode. Quando il web-modebuffer è il buffer corrente e passo a un altro buffer che è in php-mode, i web-modebinding sono ancora attivi all'interno del php-modebuffer.
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.