0

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

sublime.log_commands(True)

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

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

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

4

1 回答 1

3

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

通常一个插件可以用来跟踪这样的事情,因为EventListener类在命令执行之前和之后有事件告诉你。但是,跟踪器上有一个关于触发 on_post_window_command 的命令调色板的未解决问题,这可能与日志中未显示的命令相同。

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

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

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

通常,Sublime 附带的任何内容都在 中Default/Default.sublime-commands,并且由包添加的任何内容都以添加它的包的名称为前缀,这有助于确定要检查的文件。

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

于 2020-03-22T21:13:18.680 回答