【问题标题】:How to log commands that are run through command palette in Sublime Text 3如何在 Sublime Text 3 中记录通过命令面板运行的命令
【发布时间】:2020-07-03 09:23:45
【问题描述】:
我知道可以通过转到控制台View -> Show Console 并键入来记录命令
sublime.log_commands(True)
但是,通过命令面板运行的命令不会被记录,它只是显示:
command: show_overlay {"overlay": "command_palette"}
有没有办法记录通过调色板运行的命令?
【问题讨论】:
标签:
sublimetext
text-editor
sublimerepl
package-control
【解决方案1】:
目前没有一种方法可以记录正在从命令面板执行的命令,不。如果我没记错的话,这在旧版本的 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 添加的,并非来自命令文件;插入 sn-ps 的命令和更改语法的命令。这些是动态确定的,因为语法列表和 sn-ps 可能会发生变化。