如何在Emacs-LISP中将(非交互式)功能转换为命令(交互式功能?)>

问题描述 投票:2回答:3

我想调用函数markdown-back-to-heading,该函数在Emacs的Markdown模式下是本地的。我了解到interactive可以将非交互功能变成交互式功能,或正式地functions into commands

特殊格式:交互式

arg-描述符

此特殊形式声明函数是命令,因此可以交互地调用它(通过M-x或通过输入绑定到它的键序列)。

我尝试过:

(define-key markdown-mode-map (kbd "C-c C-h") 'markdown-back-to-heading)

这将引发错误:Wrong type argument: commandp, markdown-back-to-heading

所以我用一个交互功能将其包装起来,并且可以使用:

(defun my-markdown-back-to-heading ()
  "Wrap function to be called interactively."
  (interactive)
  (markdown-back-to-heading))

(define-key markdown-mode-map (kbd "C-c C-h") 'my-markdown-back-to-heading)

是否有更好的方法将本机功能转换为交互式命令?

我想调用markdown-to-to-heading函数,该函数在Emacs的Markdown模式下是本地的。我了解到交互将非交互功能变为交互功能,或者正式将功能转换为...

emacs command markdown interactive
3个回答
2
投票

如果要使markdown-back-to-heading具有交互性,则有几个不同的好选择:


1
投票

您也可以使用interactive-form符号属性。


0
投票

按照@Stefan的建议,我filed a Github issuesubmitted a patch,在源代码中添加了行(interactive "P")

© www.soinside.com 2019 - 2024. All rights reserved.