![]() |
1
20
简短的回答 问题线:
解决方案(强制评估宏):
这个 define-minor-mode 宏允许您相对容易地创建次要模式(就Emacs而言)。 首先我将展示它是如何完成的,然后我将解释它是如何工作的: 一般形式:
另一种方法是,如果希望为keymap使用变量,则定义keymap变量和keymap 之前 次要模式声明如下:
然后,在次要模式定义中,简单列出keymap的变量名,而不是列表
它是如何运作的
在命令名之后,我们用引号列出次要模式的文档字符串。你想干多久就干多久。 接下来我们有几个选择。最简单的选择是简单地列出三件事,然后再列出任何其他选项。这三件事必须按以下顺序列出。这三件事是:
如果您将keymap定义为一个列表,那么有几件事需要注意,特别是当您习惯于定义全局键绑定时。首先,命令名不被引用。第二,如果你想用宏, 你必须这样 force it to evaluate ( and on SO ) . 这是通过后引号(不是单引号)和逗号的组合来完成的。您可以在使用kbd宏的示例中看到这是如何实现的。如果不使用kbd宏,我还提供了一个击键定义。如果您只是在keymap中引用一个字符串,那么当按下定义的键组合时,它将打印出来(就像定义全局键绑定一样)。 如果不强制使用后引号和逗号组合对kbd宏求值,则keymap将不适用于kbd宏。
|
![]() |
2
3
在次要模式定义中需要这样的代码:
EmacsWiki 供参考。 |
![]() |
3
2
请看一下这个(仅了解有关键绑定的信息): http://www.gnu.org/software/emacs/manual/html_node/emacs/Key-Bindings.html#Key-Bindings http://www.gnu.org/software/emacs/manual/html_node/emacs/Local-Keymaps.html#Local-Keymaps 从 http://xahlee.org/emacs/reclaim_keybindings.html 好写的主要模式将运行钩子在最后。因此,可以使用钩子来定义keybinding。次要模式通常没有挂钩。在这种情况下,可以先调用(需要次要模式特征符号),然后定义keybinding。 http://www.cs.utah.edu/dept/old/texinfo/emacs19/emacs_35.html#SEC347 也许是公认的答案 here |