Emacs Lisp错误“错误的类型参数:commandp”

时间:2013-12-12 18:49:02

标签: emacs elisp

以下代码有什么问题:

(defun test
  (interactive)
  (message "hello"))
(global-set-key '[f4]  'test)

使用eval-region对此进行评估,然后按 F4 时出现错误:

Wrong type argument: commandp, test

1 个答案:

答案 0 :(得分:11)

您缺少test函数的参数列表,因此Emacs将(interactive)表单解释为arglist。因此,您已经定义了1个参数的非交互式函数,而不是没有参数的交互式命令。

你想要的是:

(defun test ()
  "My command test"
  (interactive)
  (message "hello"))

经验教训:

  1. 始终添加文档字符串 - 如果您这样做,Emacs会抱怨
  2. 使用elint(Emacs附带,尝试 C-h elint RET )。