如何将键盘映射添加到仿真模式映射列表? Emacs
How can I add a keymap to the emulation-mode-map-alists? Emacs
我制作了一个键盘映射并将其添加到次要模式:
(defvar my-keymap (make-sparse-keymap))
(progn
(define-key my-keymap (kbd "C-c s") '(lambda() (interactive) (message "Hello World")))
)
(define-minor-mode my-keybindings-mode
nil
:global t
:lighter " keys"
:keymap my-keymap)
(add-to-list emulation-mode-map-alists '(my-keybindings-mode . my-keymap))
但是,每当我尝试通过以下方式将其添加到 emulation-mode-map-alists
时:
(add-to-list emulation-mode-map-alists '(my-keybindings-mode . my-keymap))
我最终得到这个错误:
eval-region: Wrong type argument: symbolp, (evil-mode-map-alist)
However, whenever I try to add it to the emulation-mode-map-alists by writing:
(add-to-list emulation-mode-map-alists '(my-keybindings-mode . my-keymap))
I end up getting this error:
Wrong type argument: symbolp, (evil-mode-map-alist)
那是因为 add-to-list
的第一个参数应该是一个符号(带引号),像这样:
(add-to-list 'emulation-mode-map-alists ...)
如果没有 引用,您将传递 emulation-mode-map-alists
变量的评估值。
注意 C-hf add-to-list
告诉你这是一个 function ,特别要注意的是,当任何函数被调用时,它的所有参数都会被求值。这反过来告诉您,为了将符号作为参数传递,您需要引用它。
(宏和特殊形式更棘手——它们的参数不会自动求值,但它们可能选择显式地求值其中的一些,所以你总是需要支付注意文档以确定您应该传递给它们的内容。但是,函数在这方面很好且一致。)
我制作了一个键盘映射并将其添加到次要模式:
(defvar my-keymap (make-sparse-keymap))
(progn
(define-key my-keymap (kbd "C-c s") '(lambda() (interactive) (message "Hello World")))
)
(define-minor-mode my-keybindings-mode
nil
:global t
:lighter " keys"
:keymap my-keymap)
(add-to-list emulation-mode-map-alists '(my-keybindings-mode . my-keymap))
但是,每当我尝试通过以下方式将其添加到 emulation-mode-map-alists
时:
(add-to-list emulation-mode-map-alists '(my-keybindings-mode . my-keymap))
我最终得到这个错误:
eval-region: Wrong type argument: symbolp, (evil-mode-map-alist)
However, whenever I try to add it to the emulation-mode-map-alists by writing:
(add-to-list emulation-mode-map-alists '(my-keybindings-mode . my-keymap))
I end up getting this error:
Wrong type argument: symbolp, (evil-mode-map-alist)
那是因为 add-to-list
的第一个参数应该是一个符号(带引号),像这样:
(add-to-list 'emulation-mode-map-alists ...)
如果没有 引用,您将传递 emulation-mode-map-alists
变量的评估值。
注意 C-hf add-to-list
告诉你这是一个 function ,特别要注意的是,当任何函数被调用时,它的所有参数都会被求值。这反过来告诉您,为了将符号作为参数传递,您需要引用它。
(宏和特殊形式更棘手——它们的参数不会自动求值,但它们可能选择显式地求值其中的一些,所以你总是需要支付注意文档以确定您应该传递给它们的内容。但是,函数在这方面很好且一致。)