我在这里收到“错误类型参数:commandp,(lambda nil (forward-line 5))”。
(global-set-key [?\M-n] (lambda () (forward-line 5)))
错误是什么?我相当确定这很简单,而且我遗漏了一些明显的东西。
global-set-key
需要交互式命令。 (lambda () (interactive) (forward-line 5))
应该可以工作。
顺便说一句,
C-h f commandp
对于此类错误来说是一个非常好的起点。
正确的形式应该是这样 -
(global-set-key (kbd "M-n") (lambda () (interactive) (forward-line 5)))
问题是你忘记放
(interactive)
(正如布兰登提到的)。
顺便说一句,您会注意到我使用
(kbd)
函数来指定键绑定。该功能非常有用,因为您几乎可以按字面意思放置键绑定。
我也在一台新机器上看到了这个错误,我正在使用常用的
.emacs
文件,但尚未安装我的软件包,并且要执行的命令位于其中一个软件包中。 (因为无法执行的命令肯定不是交互式的!)
提供用
defun
定义的函数应该与
lambda,只要满足相同的要求即可。
所以
(defun my-move-forward ()
(interactive)
(forward-line 5))
应该可以。