1

很长一段时间以来,我一直使用常见的 emacs hydra 来导航表达式,大致如下

(defhydra hydra-word (:color red) "word"
  ("M-f" forward-word)
  ("M-b" backward-word)
  ("f" forward-word)
  ("b" backward-word)
  ;; etc..
  )

但是我总是遇到一个烦人的问题:当我总是想简单地插入一个数字时,按一个数字被解释为一个前缀参数。我查看了 hydra wiki,但找不到禁用前缀解释的答案。我知道我可以("1" self-insert-command nil :exit t)为每个数字写一个,但这很愚蠢,并导致创建了一堆额外的函数。

如何在活动 hydra 期间禁用前缀 arg 的解释?而且,我想更一般地说,有一种方法可以暂时禁用对前缀参数的解释。

4

1 回答 1

1

查看代码后,我发现您可以覆盖 hydras 基本地图,就像universal-argument-map. 因此,要实现上述仅以C-u前缀开头,但所有数字和-自插入,以下工作

(defhydra hydra-word (:color red :base-map (make-sparse-keymap)) "word"
  ("M-f" forward-word)
  ("M-b" backward-word)
  ("f" forward-word)
  ("b" backward-word)
  ;; etc..
  )
于 2018-12-16T00:09:28.270 回答