emacs,在 defun 函数中调用一个 kbd 宏
emacs, call a kbd macro in defun function
我在宏中定义了一系列键并将其插入到我的 .emacs 中,如下所示:
(fset 'xxx [keys])
有没有办法在defun函数中调用kbd宏xxx?
我试图像调用常规函数一样调用它,但它有一个错误 "definition of xxx is void"
提前谢谢你。
选项 1:
(execute-kbd-macro 'foo)
选项 2...
有两种方法可以为宏生成代码:
name-last-kbd-macro
和 kmacro-name-last-macro
前者倾向于生成您所展示的代码。
后者方便地绑定到 C-xC-kn,生成一个 lambda 形式 用于宏——即函数——这意味着您可以在代码中调用它。
所以:
- 定义宏。
- C-xC-kn
foo
RET
- 您现在可以使用 M-x
foo
- M-x
insert-kbd-macro
RET foo
RET
- 您现在可以编写调用
(foo)
. 的代码
从 Elisp 中 运行 命令的方法是调用 execute-command
。这适用于交互功能以及键盘宏。
我在宏中定义了一系列键并将其插入到我的 .emacs 中,如下所示:
(fset 'xxx [keys])
有没有办法在defun函数中调用kbd宏xxx? 我试图像调用常规函数一样调用它,但它有一个错误 "definition of xxx is void"
提前谢谢你。
选项 1:
(execute-kbd-macro 'foo)
选项 2...
有两种方法可以为宏生成代码:
name-last-kbd-macro
和 kmacro-name-last-macro
前者倾向于生成您所展示的代码。
后者方便地绑定到 C-xC-kn,生成一个 lambda 形式 用于宏——即函数——这意味着您可以在代码中调用它。
所以:
- 定义宏。
- C-xC-kn
foo
RET - 您现在可以使用 M-x
foo
- M-x
insert-kbd-macro
RETfoo
RET - 您现在可以编写调用
(foo)
. 的代码
从 Elisp 中 运行 命令的方法是调用 execute-command
。这适用于交互功能以及键盘宏。