【发布时间】:2019-11-01 18:15:11
【问题描述】:
我想调用函数markdown-back-to-heading,它在 Emacs 的 Markdown 模式下是原生的。我了解interactive 将非交互式功能变为交互式,或正式为functions into commands:
特殊形式:交互式 arg-descriptor
这种特殊形式声明一个函数是一个命令,因此它可以被交互调用(通过 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)
有没有更好的方法将原生函数变成交互式命令?
【问题讨论】:
-
你做的是对的:编写你自己的命令,添加一个
interactive规范。你使用什么样的interactive规范取决于你想要的交互行为. (例如,@Stefan 的回答提到了使用 Shift 选择。)它不仅仅用于您自己的个人使用,或者如果出于其他原因您需要能够以交互方式使用原始功能,那么请考虑建议该功能(如 Stefan 也指示)。
标签: emacs command markdown interactive