
그래서 간단한 메이저 모드(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)
모든 것이 잘 작동했습니다.