2016-06-01 9 views
0

내 .emacs 아래 코드는 정상적으로 작동하지만 바이트를 컴파일하려고하면 "잘못된 키맵 내 키 모드 맵"오류가 발생합니다.부 모드 키 바인딩을 바이트 컴파일 할 때 잘못된 키맵 오류가 발생했습니다.

(eval-and-compile 
    (defvar my-keys-mode-map (make-sparse-keymap) "my-keys-mode keymap.") 

    (define-minor-mode my-keys-mode 
    "A minor mode to override major modes keys." 
    t " my-keys" 'my-keys-mode-map) 

    (bind-key "C-;" (quote right-char) my-keys-mode-map) 
    (bind-key "C-j" (quote left-char) my-keys-mode-map) 
) 

오류는 바인드 키 라인에 있습니다. 나는 bind-key 대신 define-key를 시도했거나 make-sparse-map 대신 make-keymap을 사용했지만 행운은 없었다. 나는 elisp에 능숙하지 않다. 거기에 바이트 컴파일러에 의해 인식되도록 키 맵을 정의하는 다른 방법이 있습니까?

+2

'(define-key my-keys-mode-map (kbd "C-;") # '오른쪽 문자)'를 사용해보십시오. – Lindydancer

+0

@ Lindydancer, 문제는 내 keymap 앞에 인용문이었습니다. 드류 (Drew)는 아래에 언급했습니다. 그러나 당신의 제안에있는 기호 앞에 #가 ​​무엇을합니까? – RNP

+0

그것은 함수를 인용하는 데 사용됩니다. 이 경우 일반 견적과 대략 동일합니다. 그러나 'lambda'전에 일반 인용문을 사용하면 시스템이이를 일반 목록으로보고 컴파일하지 않습니다. – Lindydancer

답변

1

define-minor-mode에있는 키맵 기호 앞의 따옴표를 제거하십시오.

즉, 마이너 모드의 정의는 다음과 같아야합니다

(define-minor-mode my-keys-mode 
    "A minor mode to override major modes keys." 
    t " my-keys" my-keys-mode-map) 

당신은 define-minor-mode하려면 키맵, (그 값이 키 맵입니다)가 아닌 기호을 통과해야합니다.

+0

그걸 해결하고 새로운 것을 배웠습니다. @ 감사합니다. – RNP