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

Pet*_*r.O 7 keyboard-shortcuts emacs

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

  • (end-of-line+ &optional n)

下面的第一个片段有效(没有 arg)。但是其他尝试(使用 arg)失败了......我无法找到使用 args 进行键绑定的示例。这样做的正确方法是什么?

(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
Run Code Online (Sandbox Code Playgroud)

imz*_*hev 8

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

with lambda("anonymous", in place) 或 with defun(在这种情况下,您给它一个名称,您可以使用该名称来引用它)。

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

例如:

... (lambda() (interactive) (end-of-line+ -1)) ...
Run Code Online (Sandbox Code Playgroud)

或者

(defun my-end-of-line ()
  "Invoke end-of-line with -1."
  (interactive)
  (end-of-line+ -1))
Run Code Online (Sandbox Code Playgroud)