emacs:emacs23中的错误型题词错误,但在emacs24中没有



首先,我承认我是Emacs和Elisp的完整新手(总的来说,我已经偶然发现了一个错误我在尝试编写.emacs文件时已经有一段时间了。

这是重现问题所需的代码的最小示例(即,只有.emacs仅包含以下内容):

(defun define-esc-key (keybind)
  (define-key key-translation-map (kbd keybind) 'my-esc))
(define-esc-key "M-j")

这将与Emacs23:

产生以下错误
Lisp error: (wrong-type-argument integer-or-marker-p keybind)
  read-kbd-macro(keybind)
  #[(keys) "301!207" [keys read-kbd-macro] 2 2186954](keybind)
  (kbd keybind)
  (define-key key-translation-map (kbd keybind) (quote my-esc))
  define-esc-key("M-j")

,但正如我期望的那样起作用。如果我用"M-j"替换define-esc-key功能主体中的keybind实例。

(顺便说一句,对不起,标题不好,但我只是想不出任何描述性。)

来自NEWS文件:

* Lisp Changes in Emacs 24.3
...
*** `kbd' is now a function rather than a macro.

这意味着,在较早的emacs版本中,与示例中使用变量相反,对kbd的论点必须在呼叫中实际上存在。

另外,您可以使用 eval和backquotes插入值:

(eval `(kbd ,keybind))

相关内容

最新更新