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" (....))

如果我将其与 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)

一切正常。

相关内容