gpt4 book ai didi

emacs - 如何正确定义次要模式的键盘映射

转载 作者:行者123 更新时间:2023-12-01 22:48:01 25 4
gpt4 key购买 nike

我想为适合任何程序模式的改进定义自定义模式。我需要为所有这些模式定义键绑定(bind)。我选择使用 define-minor-mode:keymap 以最小的努力声明键绑定(bind)。

我想将 comment-or-uncomment-region 绑定(bind)到 "C-;" kbd 宏给了我 [67108923] 此键序列的魔数(Magic Number)。

我写的示例不起作用

(define-minor-mode
my-mode
nil nil
:keymap '(
( [67108923] . comment-or-uncomment-region )
)
)

我已经注册了模式,将其打开,但是按下 С-; 会产生键序列未定义的通知

之后,我在临时缓冲区中写入并评估以预期方式执行的简单 global-set-key

(global-set-key [67108923] 'comment-or-uncomment-region )

现在按 C-; 会产生预期的 comment-or-oncomment-region 行为。

我已尝试通过 C-h f 搜索功能信息来调试问题。它会产生奇怪的输出,comment-or-oncomment-region两次 绑定(bind)到不同 键序列:

It is bound to C - ;, C-;

第一个随着次要模式切换出现和消失,其他从 global-set-key 调用中出现。

如果我对两个 map 使用了相同的键定义,那怎么可能呢?我错过了哪些细节?

最佳答案

不要使用魔数(Magic Number)。 IOW 使用[?\C-\;],所以它可以被人类理解。我同意德鲁的观点:

(defvar my-mode-map
(let ((map (make-sparse-keymap)))
(define-key map [?\C-\;] 'comment-or-uncomment-region)
map))

(define-minor-mode my-mode
"blabla"
nil nil nil
<add code, if any>)

哦,还有一件事:为什么您更喜欢 C-; 而不是标准的 M-; 绑定(bind)?

关于emacs - 如何正确定义次要模式的键盘映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19308390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com