gpt4 book ai didi

Emacs 我想从 lisp 函数中调用 execute-kbd-macro

转载 作者:行者123 更新时间:2023-12-03 23:23:44 25 4
gpt4 key购买 nike

我想从 Lisp 函数中调用键盘宏。我希望加入一些自定义错误处理。
mykey是存储在 (fset ...) 中的文本文件中的键盘宏格式。
我用 load-file 加载它使用 M-x mykey 调用时效果很好.

当我执行这个函数并插入 mykey我只得到当前缓冲区中显示的键名,而不是执行。有没有我错过的步骤?

(defun gn-batch-search (key-name)
"Execute a keyboard macro that has already been loaded."
(interactive "sName of macro key:")
(execute-kbd-macro key-name))

最佳答案

尝试

(defun gn-batch-search (key-name)
"Execute a keyboard macro that has already been loaded."
(interactive "sName of macro key:")
(execute-kbd-macro (intern key-name)))

您遇到的问题是 "sName of macro key:" 交互式规范提示用户并返回一个字符串,并且您要运行名称由该字符串描述的命令。这就解释了为什么它没有做你想做的事情以及为什么你需要 intern

至于它为什么这样做:键盘宏表示为事件向量,其中事件可以是鼠标点击或按键等事件。事实证明,一个字符串被认为是一种向量(一个向量字符),一个字符也是一个事件(它表示当你在键盘上按下那个字符时发送的事件),所以字符串 "hi" 是一个有效的键盘宏,它表示先按 h 再按 i 的 Action ,因此当您运行此宏时,它(通常)最终会在当前缓冲区中插入“自身”(除了特殊缓冲区,如 dired、 *Help* 、.. . 其中 h 和 i 绑定(bind)到其他命令)。

此外,您可以使用 execute-kbd-macro 而不是 command-execute,它可以与“任何”命令一起使用,无论它是定义为键盘宏还是普通功能。

关于Emacs 我想从 lisp 函数中调用 execute-kbd-macro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33524682/

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