为什么Emacs local-set-key不覆盖模式挂钩中的全局设置键?

时间:2019-03-10 15:55:29

标签: emacs key-bindings

在Emacs的tide-mode(打字稿开发)中,我想使用通常绑定到fill-paragraph的M-q来运行tide-format。我有一个模式钩

(defun setup-tide-mode ()
...
  (local-set-key [M-q] 'tide-format)
  (describe-key [M-q]))
(add-hook 'typescript-mode-hook #'setup-tide-mode)

当我打开一个打字稿文件时,我确实看到了*Help*缓冲区,它确实显示了

<M-q> runs the command tide-format ...

但是当我随后运行C-h k M-q描述M-q的键绑定时,我得到了

M-q runs the command fill-paragraph

<M-q>M-q之间在打印输出中存在这种可疑的差异。这可能是在告诉我一些信息,但我不知道是什么。

在本地覆盖M-q以运行其他命令的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您要使用[?\M-q]而不是[M-q],因为?\M-q是在您按下Alt / Meta修饰符和Q键时生成的事件。