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))

関連情報