如何将变量传递给kbd函数?

时间:2018-08-17 19:23:51

标签: emacs evil-mode

我有以下代码段:

table3

以上代码段无效。

现在我知道这可行:

(setq evil-string-inflection-bind "g~")
(define-key evil-normal-state-map (kbd evil-string-inflection-bind) 'evil-operator-string-inflection)

为什么第一个代码段不起作用而第二个代码段却起作用?乍一看,它们应该相等。

有没有一种方法可以将参数传递给(define-key evil-normal-state-map (kbd "g~") 'evil-operator-string-inflection) 函数,或者它有某种特殊性?

1 个答案:

答案 0 :(得分:0)

我认为您所说的问题可能与您的问题无关。听起来evil特有。当然,我们可以看到,将字符串文字传递给kbd与传递具有相同值的变量之间没有根本区别:

ELISP> emacs-version
"26.1"

ELISP> (setq map1 (make-sparse-keymap))
ELISP> (define-key map1 (kbd "g~") 'evil-operator-string-inflection)
ELISP> map1
(keymap
 (103 keymap
      (126 . evil-operator-string-inflection)))

ELISP> (setq map2 (make-sparse-keymap))
ELISP> (setq evil-string-inflection-bind "g~")
ELISP> (define-key map2 (kbd evil-string-inflection-bind) 'evil-operator-string-inflection)
ELISP> map2
(keymap
 (103 keymap
      (126 . evil-operator-string-inflection)))