Tôi có một bộ các ràng buộc chính mà tôi sử dụng cho cả hai web-mode
và php-mode
trong chế độ chèn (của Evil). Vì vậy, tôi không thể sử dụng set-local-map
hoặc một cái gì đó. Bởi vì trong chế độ bình thường, các phím tương tự sau đó sẽ gọi các lệnh khác. Vì vậy, các ràng buộc cần phải được hoạt động evil-insert-state-map
chỉ.
Tôi có những điều sau đây:
(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)))
Vì vậy, mỗi khi web-mode
hoặc php-mode
đang được tải, các ràng buộc chính này sẽ được kích hoạt.
Vấn đề là: Giả sử tôi có hai bộ đệm mở, một trong php-mode
và một trong web-mode
. Khi web-mode
bộ đệm là bộ đệm hiện tại và tôi chuyển sang bộ đệm khác php-mode
, các web-mode
liên kết vẫn hoạt động bên trong php-mode
bộ đệm.
Tôi đã cố gắng giải quyết vấn đề này bằng cách sử dụng (add-hook 'web-mode-hook [...])
và (add-hook 'php-mode-hook [...])
thay vì thiết lập các ràng buộc trong eval-after-load
. Nhưng giải pháp đó không hoạt động trong tình huống này.
Bất kỳ đề xuất? Tôi thực sự sẽ đánh giá cao nó.
evil-define-key
.