
そこで、シンプルなメジャーモード(レポートモード)を書いてみました。使用して例として。キーマップが実際にはマッピングされていないことを除いて、すべて動作しているようです。
そうすると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
report-mode-map を調べてみると、 withinという追加のキーワードがあることを除けば、ほぼ正しいように見えます。
(keymap (27 keymap (110 . kill-dupe)) keymap (....) "Report-Map" (....))
これを、たとえば text-mode-map と比較すると、sparse-key-map 定義文字列が埋め込まれており、追加の「keymap」文字列があります。eval すると(keymapp report-mode-map)
true の結果が得られるので、異なる形式は問題ではないことを示しているようです...
最後に、他のキーマップ バインディングもどれも機能しないので、これは確かに問題であると確信しています。
どのようなアイデアでも結構です。コードを直接貼り付けることができず、再度申し訳ありません。
答え1
それで、私は答えを見つけました。
結局、カスタム キー マップをdefine-derived-mode
呼び出したことがありませんでした。use-local-map
以下を含めたら:
(use-local-map report-mode-map)
すべて正常に動作しました。