繁体   English   中英

获取Elisp / Emacs中的交互功能列表

[英]Get list of interactive functions in Elisp/Emacs

我有一堆带有前缀(例如* 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/"))))))

您说“可能还有其他替代方式和现代方式来创建具有预定义项和自动完成功能的输入吗?”

  1. 使用Icicles并绑定icicle-must-match-regexp
(defun zb/ ()
      (interactive)
      (let ((icicle-must-match-regexp  "^zb/"))
        (call-interactively (intern (completing-read "zb/ command: " obarray 'commandp t)))))
  1. 您也可以在没有Edo的情况下使用香草Emacs:
(defun zb/ ()
      (interactive)
      (call-interactively
        (intern (completing-read
                 "zb/ command: "
                 obarray
                 (lambda (cmd)
                   (and (commandp cmd)  (string-match-p "^zb/" (symbol-name cmd))))
                 t))))

或按照@artscan的建议进行操作:使用apropos-internal来匹配正则表达式。 IOW,要么让complete completing-read做匹配,要么首先使用apropos-internal匹配。 您也可以将commandp谓词传递给apropos-internal

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM