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

관련 정보