我有一堆带有前缀的交互式函数,比如 *zb/”(例如“zb/create-temp-buffer”)。每次输入Mx交互时,我都会有点累,这是我喜欢的命令的前缀跑。
为了自动化这一点,我想检索我所有交互功能的列表,并通过ido-completing-read显示它们(顺便说一句,可能还有其他替代和现代方法来创建带有预定义项目和自动完成的输入?)。但我没有设法找到如何检索这样的列表。你能给我一个提示如何实现这一目标吗?
所有可用交互功能的列表就足够了;过滤不是问题。
谢谢。
也许试试Smex?
Smex 是 Emacs 的 Mx 增强。它建立在 Ido 之上,为您最近和最常用的命令提供了一个方便的界面。以及所有其他命令。
您可以使用此功能进行选择
(defun eab/select-zb/ ()
(interactive)
(call-interactively
(intern
(ido-completing-read "M-x zb/"
(mapcar 'symbol-name (apropos-internal "^zb/"))))))
你说“可能还有其他替代和现代的方法来创建带有预定义项目和自动完成的输入?” .
icicle-must-match-regexp
:(defun zb/() (交互的) (let ((icicle-must-match-regexp "^zb/")) (call-interactively (intern (completing-read "zb/ command: " obarray 'commandp t)))))
(defun zb/() (交互的) (交互调用 (实习生(完成阅读 “zb/命令:” 数组 (拉姆达(CMD) (and (commandp cmd) (string-match-p "^zb/" (symbol-name cmd)))) t))))
或者按照@artscan 的建议进行操作:用于apropos-internal
匹配正则表达式。IOW,要么completing-read
进行匹配,要么先使用apropos-internal
. 您也可以将commandp
谓词传递给apropos-internal
。