字节编译次要模式键绑定时出现无效的键映射错误
Invalid Keymap error when byte compiling minor-mode key bindings
下面来自我的 .emacs 的代码可以正常工作,但是当我尝试对其进行字节编译时出现 "Invalid keymap my-keys-mode-map" 错误。
(eval-and-compile
(defvar my-keys-mode-map (make-sparse-keymap) "my-keys-mode keymap.")
(define-minor-mode my-keys-mode
"A minor mode to override major modes keys."
t " my-keys" 'my-keys-mode-map)
(bind-key "C-;" (quote right-char) my-keys-mode-map)
(bind-key "C-j" (quote left-char) my-keys-mode-map)
)
错误在绑定键行。我试过 define-key 而不是 bind-key,或者使用 make-keymap 而不是 make-sparse-map 但没有成功。我不太精通elisp。是否有其他方法来定义键映射以便字节编译器识别它?
删除 define-minor-mode
中键映射符号前面的引号。
也就是说,minor-mode的定义应该是这样的:
(define-minor-mode my-keys-mode
"A minor mode to override major modes keys."
t " my-keys" my-keys-mode-map)
您需要将 keymap,而不是 symbol(其值为 keymap)传递给 define-minor-mode
。
下面来自我的 .emacs 的代码可以正常工作,但是当我尝试对其进行字节编译时出现 "Invalid keymap my-keys-mode-map" 错误。
(eval-and-compile
(defvar my-keys-mode-map (make-sparse-keymap) "my-keys-mode keymap.")
(define-minor-mode my-keys-mode
"A minor mode to override major modes keys."
t " my-keys" 'my-keys-mode-map)
(bind-key "C-;" (quote right-char) my-keys-mode-map)
(bind-key "C-j" (quote left-char) my-keys-mode-map)
)
错误在绑定键行。我试过 define-key 而不是 bind-key,或者使用 make-keymap 而不是 make-sparse-map 但没有成功。我不太精通elisp。是否有其他方法来定义键映射以便字节编译器识别它?
删除 define-minor-mode
中键映射符号前面的引号。
也就是说,minor-mode的定义应该是这样的:
(define-minor-mode my-keys-mode
"A minor mode to override major modes keys."
t " my-keys" my-keys-mode-map)
您需要将 keymap,而不是 symbol(其值为 keymap)传递给 define-minor-mode
。