Emacs 主模式鍵映射定義失敗

Emacs 主模式鍵映射定義失敗

所以,我嘗試寫一個簡單的主要模式(報告模式)使用舉個例子。我似乎一切正常,除了鍵盤映射實際上似乎沒有映射。

如果我這樣做,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")

它來自這裡

如果我檢查report-mode-map,我會看到看起來大部分正確的內容,除了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)

一切都很好。

相關內容