在 emacs 中,如何将参数传递给键绑定定义中的函数

在 emacs 中,如何将参数传递给键绑定定义中的函数

我想为函数创建一个键绑定end-of-line+并传递一个值-1到岛该函数声明为:

  • (行尾+&可选n)

下面的第一个片段有效(没有参数)。但其他尝试(带参数)失败...我一直无法找到带有参数的键绑定示例。这样做的正确方法是什么?

(global-set-key (kbd  "C-s-E") 'end-of-line+)     ;; Okay!

(global-set-key (kbd  "C-s-E") 'end-of-line+ -1)   ;; Fails 
(global-set-key (kbd  "C-s-E") 'end-of-line+ '-1)  ;; Fails
(global-set-key (kbd  "C-s-E") '(end-of-line+ -1)) ;; Fails

答案1

这个想法只是构造一个新函数来表达您想要的自定义行为(并将密钥绑定到它)。

要么与lambda(“匿名”,就地)或与defun(在这种情况下,您给它一个名称,您可以通过该名称来引用它)。

要定义交互式“命令”,您需要添加(interactive)到正文前面。

例如:

... (lambda() (interactive) (end-of-line+ -1)) ...

或者

(defun my-end-of-line ()
  "Invoke end-of-line with -1."
  (interactive)
  (end-of-line+ -1))

相关内容