以下是一个最简单的代码片段,可以让事情开始运行:
现在我可以按下C-M-r来“调用”
(define-prefix-command 'foo)
(define-key foo "a" 'bar)
(define-key foo "b" 'baz)
(global-set-key (kbd "C-M-r") 'foo)
现在我可以按下C-M-r来“调用”
foo
键映射。但我想知道如何从代码中实现这个功能,例如:
```elisp
(call-keymap foo)
```(funcall (lambda-from-keymap 'foo))
在调用此函数后,我希望焦点位于迷你缓冲区中,并期望输入a、b或C-h。是否可能实现这样的效果?
help-form
的问题。我还需要更改调用约定,将键位图作为符号要求,以获得漂亮的帮助文本:(call-keymap 'foo)
而不是(call-keymap foo)
。 - npostavs(keymap (,map . ,map))
是什么意思。 - Stefan(TYPE . BINDING)
形式匹配,因此我们假装map
中的命令绑定在前缀键MAP
下(即应该是一个符号)。显然,当您在read-key-sequence
提示处按下C-h
时,这会使describe-bindings
打印出一些合理的内容。 - npostavs