即。任何可以从M-x
运行的东西。包括任何C内置函数,用户定义等
e.g。 list-all-commands
'(... about-emacs ... zap-to-char ...)
在M-x
的自动填充等行为中,它必须是可访问的。
来自How to print all the defined variables in emacs?,我们可以访问所有符号:
(pp-eval-expression
(quote (loop for x being the symbols
if (boundp x)
collect (symbol-name x))))
但其中大部分都不是互动功能。
编辑:
叹息事实上,有一点。通过将此列表发送到语音识别引擎,在对连字符进行标记后,symbol-name
等等,我应该能够说出除了最奇怪的命令之外的所有命令(Dragon NaturallySpeaking很好)。没有这个列表,识别准确度会降低,我将不得不为我想要的任何命令手动硬编码键盘快捷键,或者在误识别时处理不断的挫折。
这就是我需要的。但是,我可能也想写自己的自动完成行为;或比较不同模式提供的名称的相似性;或者发现与我使用的常用命令在词法上类似的新命令(例如,使用align-regex
通常可能会建议align-entire
);或分析通过不同地区命名移动的任何不一致(例如beginning-of-line
与up-list
);或者我已经看过说ido
,并想看看是否有一个标准函数来构建它用来有效查询的数据结构;或者我觉得要对它进行基准测试;或者我只是好奇。这有很多用途。
Emacs的重点在于行为是暴露给程序员的,而不仅仅是通过UI。
你现在可以收回你的投票吗?我认为它不是'不清楚我要问的是什么"以及是否提出澄清要点。
答案 0 :(得分:3)
(let ((cmds ()))
(mapatoms (lambda (s) (when (commandp s) (push s cmds))))
cmds)