Tôi bắt đầu mã hóa một chế độ nhỏ để cung cấp một số keybindings. Nỗ lực ban đầu của tôi có một lỗi đánh máy:
(define-minor-mode borked-mode
"A mode defined with a broken key binding"
nil nil
'(([b] . 'previous-line)))
Tôi đã có ý định sử dụng b
chìa khóa, và ngay lập tức nhận ra rằng tôi nên sử dụng "b"
thay vì [b]
. Vì vậy, tôi xác định lại chế độ nhỏ:
(define-minor-mode borked-mode
"A mode defined with a broken key binding"
nil nil
'(("b" . 'previous-line)))
Tuy nhiên, điều này đã không làm việc. Điều này đặt ra cho tôi một con ngỗng hoang dã đuổi theo tất cả các cách khác nhau của các khóa ràng buộc (ví dụ: (kbd ...), [...], v.v.). Cuối cùng tôi nhận ra rằng chỉ cần đánh giá lại (define-minor-mode ...)
biểu mẫu không thay đổi gì cả, tôi đã bị mắc kẹt với bản đồ khóa bị hỏng ban đầu. Sau đó, tôi đã thử thay đổi sơ đồ bàn phím trực tiếp thông qua (define-key borked-mode-map ...)
và vẫn không thể tải sơ đồ bàn phím đã sửa. Cuối cùng tôi khởi động lại Emacs và chế độ nhỏ của tôi đã được tải chính xác.
Câu hỏi của tôi là: làm thế nào để bạn cập nhật một định nghĩa chế độ nhỏ khi bạn phát triển nó? Có cách nào để xóa một định nghĩa bị hỏng, hoặc bạn phải khởi động lại emacs để xóa các bit bị hỏng?
defvar
sẽ không đánh giá lại giá trị của nó sauC-M-x
:) Bạn cầndefparameter
hoặc riêng biệtsetf
.