Emacs 주요 모드 키 맵 정의가 실패합니다.

Emacs 주요 모드 키 맵 정의가 실패합니다.

그래서 간단한 메이저 모드(report-mode)를 작성해 보았습니다.사용하여예로서. 키맵이 실제로 매핑되지 않는 것 외에는 모든 것이 작동하는 것 같습니다.

그렇게 하면 C-h f report-mode내가 추가한 키 맵 목록이 올바르게 표시됩니다. 즉, 다음과 같습니다.

ESC  n    kill-dupe

그러나 USE Mn 또는 ESC n으로 이동하면 아무 일도 일어나지 않습니다. M-x kill-dupe문제가 되지 않는 것 같도록 수동으로 함수를 호출할 수 있습니다 .

안타깝게도 해당 컴퓨터가 다른 네트워크에 있기 때문에 실제 elisp 코드를 복사하여 붙여넣을 수 없습니다.

내가 사용한 정확한 예를 복사하여 대체할 수 있습니다.

(defvar report-mode-map
  (let ((map (make-sparse-keymap "Report-Mode")))
    (define-key map "\M-n" 'kill-dupe)
    map)
 "Keymap for browsing report mode")

에서 오는여기.

보고서 모드 맵을 조사하면 다음과 같은 추가 키워드가 있다는 점을 제외하면 대부분 정확해 보이는 것을 볼 수 있습니다 keymap.

(keymap (27 keymap (110 . kill-dupe)) keymap (....) "Report-Map" (....))

이것을 텍스트 모드 맵과 비교하면 희소 키 맵 정의 문자열이 포함되어 있고 추가 '키맵' 문자열이 있습니다. 평가하면 (keymapp report-mode-map)true라는 결과가 나오므로 다른 형식이 문제가 되지 않음을 나타내는 것 같습니다.

마지막으로, 다른 키맵 바인딩 중 어느 것도 작동하지 않기 때문에 이것이 문제라고 확신합니다.

어떤 아이디어라도 좋을 것입니다. 코드를 바로 붙여넣지 못해서 다시 한번 죄송합니다.

답변1

그래서 답을 찾았습니다.

나는 내 사용자 정의 키 맵을 define-derived-mode호출한 적이 없다는 것이 밝혀졌습니다 .use-local-map

일단 다음을 포함시켰습니다:

(use-local-map report-mode-map)

모든 것이 잘 작동했습니다.

관련 정보