如何通过 Sublime Text 3 中的命令面板记录 运行 的命令

How to log commands that are run through command palette in Sublime Text 3

我知道可以通过转到控制台 View -> Show Console 并键入

来记录命令
sublime.log_commands(True)

但是,通过命令选项板 运行 的命令不会被记录,它只显示:

command: show_overlay {"overlay": "command_palette"}

有没有办法通过调色板记录命令 运行?

目前没有办法记录正在从命令面板执行的命令,没有。如果我没记错的话,这在旧版本的 Sublime 中是可能的,但是在命令面板获得接受像 View Package File 这样的命令输入的能力时,它停止工作了。这可能是用于在命令面板中触发输入处理的机制的一个分支,但这只是一个猜测。

通常可以使用插件来跟踪此类事件,因为 EventListener 类 在命令执行之前和之后都有事件可以告诉您。但是,关于 the command palette on triggering on_post_window_command 的跟踪器存在一个未解决的问题,这可能是由与未显示在日志中的命令相同的原因引起的。

目前,了解从命令面板调用了哪些命令和参数的唯一方法是检查提供它们的 sublime-commands 文件。

与菜单不同,命令面板中的命令不允许有动态标题,因此找到您知道正在选择的文本具有 "caption" 的命令条目是一件相对简单的事情。

棘手的部分可能在于确定命令的来源。在控制台中,sublime.find_resources('*.sublime-commands') 将显示每个已知命令文件的列表,您可以通过命令面板中的 View Package File 打开它们。

一般来说,Sublime 附带的任何东西都在 Default/Default.sublime-commands 中,任何由包添加的东西都以添加它的包的名称为前缀,这有助于确定要检查的文件。

请注意,命令面板中有一些命令是由 Sublime 添加的,并非来自命令文件;插入片段的命令和更改语法的命令。这些是即时确定的,因为语法和片段列表可能会发生变化。