获取Elisp/Emacs中的交互函数列表
我有一大堆带有前缀的交互函数,比如*zb/(例如“zb/create temp buffer”)。每次输入M-xinteraction这个我喜欢运行的命令前缀时,我都有点累 为了实现自动化,我想检索我所有交互功能的列表,并通过ido completing read显示它们(顺便说一句,可能还有其他替代和现代的方法来创建具有预定义项和自动完成功能的输入?).但是我没有找到如何检索这样的列表。您能给我一个提示吗 列出所有可用的交互功能就足够了;过滤不是问题 谢谢。可以试试吗 Smex是Emacs的一个M-x增强功能。它构建在Ido之上,为您最近最常用的命令以及所有其他命令提供了一个方便的界面获取Elisp/Emacs中的交互函数列表,emacs,elisp,Emacs,Elisp,我有一大堆带有前缀的交互函数,比如*zb/(例如“zb/create temp buffer”)。每次输入M-xinteraction这个我喜欢运行的命令前缀时,我都有点累 为了实现自动化,我想检索我所有交互功能的列表,并通过ido completing read显示它们(顺便说一句,可能还有其他替代和现代的方法来创建具有预定义项和自动完成功能的输入?).但是我没有找到如何检索这样的列表。您能给我一个提示吗 列出所有可用的交互功能就足够了;过滤不是问题 谢谢。可以试试吗 Smex是Emacs的一
您可以使用此功能进行选择
(defun eab/select-zb/ ()
(interactive)
(call-interactively
(intern
(ido-completing-read "M-x zb/"
(mapcar 'symbol-name (apropos-internal "^zb/"))))))
您会说“可能还有其他替代和现代的方法来创建带有预定义项和自动完成的输入?”
或者按照@artscan的建议:使用
apropos internal
匹配regexp.IOW,或者让完成读取
进行匹配,或者先使用apropos internal
进行匹配。您也可以将commandp
谓词传递给apropos internal
。完美!apropos internal是我寻找的关键字。感谢您让我们了解Smex,但它需要一段时间来理解;另一方面,它有一个内置的工具。
(defun zb/ ()
(interactive)
(let ((icicle-must-match-regexp "^zb/"))
(call-interactively (intern (completing-read "zb/ command: " obarray 'commandp t)))))
(defun zb/ ()
(interactive)
(call-interactively
(intern (completing-read
"zb/ command: "
obarray
(lambda (cmd)
(and (commandp cmd) (string-match-p "^zb/" (symbol-name cmd))))
t))))