将lambda绑定到键时出现“错误的类型参数:commandp”错误

时间:2009-08-09 06:59:35

标签: emacs elisp

我在这里得到一个“错误的类型参数:commandp,(lambda nil(forward-line 5))”。

(global-set-key [?\M-n] (lambda () (forward-line 5)))

错误是什么?我很确定这很简单&我错过了一些明显的东西。

3 个答案:

答案 0 :(得分:116)

global-set-key需要一个交互式命令。 (lambda () (interactive) (forward-line 5))应该有用。

顺便说一句,C-h f commandp是一个非常好的起点,可以解决这类错误。

答案 1 :(得分:34)

正确的形式应该是这个 -

(global-set-key (kbd "M-n") (lambda () (interactive) (forward-line 5)))

问题是你忘了放(interactive)(正如brendan所说)。

顺便提一下,您会注意到我使用(kbd)函数指定了键绑定。这个函数非常有用,因为你几乎可以按字面意思放置键绑定。

答案 2 :(得分:2)

我在新机器上也看到了这个错误,我使用的是通常的func (f *crdclient) Update(obj *crd.Example) (*crd.Example, error) { var result crd.Example err := f.cl.Put(). Namespace(f.ns).Resource(f.plural). Name(obj.Name). Body(obj).Do().Into(&result) return &result, err } 文件,但是没有安装我的软件包,要执行的命令就在其中一个软件包中。 (因为无法执行的命令不是交互式的!)