首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs:在Emacs23中错误类型的参数错误,但在Emacs24中没有错误

Emacs:在Emacs23中错误类型的参数错误,但在Emacs24中没有错误
EN

Stack Overflow用户
提问于 2014-01-20 14:58:14
回答 1查看 423关注 0票数 1

首先,我要承认,我是Emacs和ELisp的新手(而且通常也是Lisp ),我在编写.emacs文件时遇到了一个错误,这个错误已经让我困惑了好长一段时间了。

下面是重现问题所需代码的一个最小示例(例如,.emacs只包含以下内容):

代码语言:javascript
复制
(defun define-esc-key (keybind)
  (define-key key-translation-map (kbd keybind) 'my-esc))
(define-esc-key "M-j")

这将在Emacs23中产生以下错误:

代码语言:javascript
复制
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")

但它在Emacs24中的工作方式与我所期望的一样。如果我用Emacs23替换define-esc-key函数体中的keybind实例,那么它也可以在"M-j"中工作。

(顺便说一句,很抱歉出现了糟糕的标题,但我想不出更多描述性的东西了。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-20 15:31:54

来自NEWS文件:

代码语言:javascript
复制
* Lisp Changes in Emacs 24.3
...
*** `kbd' is now a function rather than a macro.

这意味着在早期的Emacs版本中,kbd的参数必须确实存在于调用中,而不是在示例中使用变量。

或者,您可以使用eval和反引号插入值:

代码语言:javascript
复制
(eval `(kbd ,keybind))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21237159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档