【问题标题】:emacs, call a kbd macro in defun functionemacs,在 defun 函数中调用 kbd 宏
【发布时间】:2015-01-20 07:38:21
【问题描述】:

我在宏中定义了一系列键并将其插入到我的 .emacs 中,如下所示:

(fset 'xxx [keys]) 

有没有办法在 defun 函数中调用 kbd 宏 xxx? 我试着把它当作普通函数来调用,但它有一个错误“xxx的定义是无效的”

提前谢谢你。

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    选项 1:

    (execute-kbd-macro 'foo)
    

    选项 2...

    有两种方法可以为宏生成代码:

    name-last-kbd-macrokmacro-name-last-macro

    前者倾向于生成如您所展示的代码。

    后者方便地绑定到 C-xC-kn,为宏生成 lambda 形式 -- 即一个函数 -- 这意味着你可以在代码中调用它。

    所以:

    • 定义宏。
    • C-xC-kn foo RET
    • 您现在可以使用 M-x foo
    • M-x insert-kbd-macro RET foo RET
    • 您现在可以编写调用(foo) 的代码。

    【讨论】:

    • 谢谢,我觉得应该是(execute-kbd-macro (symbol-function 'foo))
    • 没必要。如果参数是一个符号,execute-kbd-macro 使用它的函数槽(如文档所述)。
    【解决方案2】:

    从 Elisp 运行命令的方法是调用 execute-command。这适用于交互功能以及键盘宏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      相关资源
      最近更新 更多