모든 프로그램 모드에 적합한 개선을 위해 사용자 지정 모드를 정의하고 싶습니다. 그리고이 모든 모드에 대해 키 바인딩을 정의해야합니다. 최소 노력으로 키 바인딩을 선언하려면 define-minor-mode
을 :keymap
과 함께 사용합니다.부 모드에 대한 키맵을 올바르게 정의하는 방법
바인딩하고 싶습니다. comment-or-uncomment-region
에 "C-;"
kbd 매크로가이 키 시퀀스에 대해 [67108923]
마술 번호를 부여했습니다. 나는 모드를 등록한
(define-minor-mode
my-mode
nil nil
:keymap '(
([67108923] . comment-or-uncomment-region)
)
)
작동하지 않습니다 샘플을 쓴 적이
는 그것을 전환 만 누르면 С-;
은 키 순서가 난 후
을 정의되지 않은 알림을 생산 스크래치 버퍼에 글을 쓰고 예상 된 방식으로 수행 된 간단한 global-set-key
을 평가합니다.
(global-set-key [67108923] 'comment-or-uncomment-region)
지금 C-;
을 누르면 예상되는 comment-or-oncomment-region
동작이 생성됩니다.
C-h f
을 통해 기능 정보를 검색 할 때 문제를 디버그하려고했습니다. 그것은 comment-or-oncomment-region
가 다른 키 시퀀스에 두 번를 바인딩, 이상한 출력을 생성합니다
It is bound to C - ;, C-;
먼저 하나가 나타나고 다른 global-set-key
호출에서 등장, 마이너 모드 토글로 사라집니다.
두 맵에 동일한 키 정의를 사용했다면 어떻게 될까요? 내가 놓친 세부 사항은 무엇인가?
make-sparse-keymap은 완벽하게 작동했지만 http://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Minor에 기반한 원래의 접근 방식에 무엇이 잘못되었는지 아직 이해하지 못합니다. -Modes.html – ayvango
ayvango : 코드는 Emacs 24.3에서 작동합니다. 나는 당신의 문제가 처음에는 틀렸다고 생각하고 그 후에는 "my-mode-map"을 정의했다.이후의 모든 평가는 기존지도를 손상시키지 않았습니다. 당신은'my-mode-map '을 언 바인드해야 할 필요가있었습니다. – phils