我是emacs的新手,也是lisp的新手
我正在尝试设置Meta +空格键来设置突出显示文本的标记(在当前光标位置)。 在网上搜索和试验我最终得到了命令
(global-set-key (kbd "M-SPC") 'push-mark nil nil 1)
上面的命令对我不起作用,我得到“错误的参数数量错误”。
获得了函数定义,
如何格式化命令以传递三个值?
错误肯定是由于推送标记函数调用,因为其他函数(例如reverse-char(我没有传递输入)正常工作
答案 0 :(得分:2)
当 Ch f global-set-key
RET 告诉您,global-set-key
有两个参数:(global-set-key KEY COMMAND)
你传递了五个参数:(global-set-key (kbd "M-SPC") 'push-mark nil nil 1)
因此“错误的论点数量”。
您可以为命名函数提供符号,也可以为匿名函数/ lambda提供符号。
例如:(global-set-key (kbd "M-SPC") (lambda () (interactive) (push-mark nil nil 1)))
答案 1 :(得分:2)
为@phils所说的添加一点:
push-mark
不是命令:其定义没有interactive
规范。请注意,phils的示例在匿名函数中包含(interactive)
,使其成为命令。
与push-mark
不同,顾名思义,push-mark-command
是一个命令。如果您想要push-mark
的效果,那么只需绑定push-mark-command
,或者更好set-mark-command
。