emacs elisp binding

256
points
points
(global-set-key [(control f4)] (kill-buffer buffer-name) (delete-window))
C-f4를 누르면 버퍼가 죽으면서 윈도우가 닫히게 하려고 하는데 뭐가 잘못된걸까요?
KLDPOpen Source, Geek, IT... |
|
사용자 로그인둘러보기KLDP 내용 검색KLDP Wiki |
points
이렇게합니다.
global-set-key는 뒤에 오브젝트를 받으므로 앞에 ' 를 붙여야 합니다. (붙이지않으면 곧장 eval됨)
즉, 람다표현식을 사용하여 함수를 생성하고 이 함수 오브젝트를 인자로 넘깁니다. (Lisp에서는 함수또한 데이터입니다)
global-set-key 는 받은 오브젝트를
elisp 언어로써 정의된 commandp 함수로 넘겨서 interactive 하게 실행 가능한 오브젝트인지 확인합니다.
interactive 하게 실행 가능한 오브젝트의 조건 중에는 람다에 (interactive) 를 포함함으로써 만족할 수 있습니다.
(interactive)가 포함됨으로써 이 함수가 emacs 와 interactive하게 작동함을 보장합니다. lambda 함수에 인자를 하나 받으면 (interactive "bInput String:") 과 같이 이를 mini-buffer 를 통해 입력받을 수도 있습니다.
(global-set-key [(control f4)]'(lambda ()
(interactive)
(kill-buffer buffer-file-name)
(delete-window)))
참고:
http://www.gnu.org/software/emacs/elisp/html_node/Interactive-Call.html
http://www.gnu.org/software/emacs/elisp/html_node/Killing-Buffers.html
points
감사합니다.
^^ 더불어 자세한 설명에 링크까지~
감사합니다.