如何在命令或宏(无插件)中更改 Sublime Text 3 StatusBar 消息?

How to change the Sublime Text 3 StatusBar message in a command or macro (no plugin)?

在这里向 Sublime Text 3 用户致辞。

我写了几个宏来启用拼写检查和加载特定词典,因为我经常在法语和英语之间切换,我想要一个简单的快捷方式(而不是浏览菜单或命令托盘)。

我的宏按预期工作 (french-spellcheck.sublime-macro, english-spellcheck.sublime-macro)。 但我想在状态栏中显示一条消息,例如 "Switched to French" 或 "Switched to English" (一段时间,比如说 5 秒)。

我找遍了所有我知道的地方并尝试了一段时间,但显然没有办法在命令中执行此操作(可以在宏的末尾添加),因为 set_status internal ST3's Python API command(来自Window包)仅适用于插件...

有没有人知道如何在 command/macro 和 not 中向 SublimeText3 StatusBar 显示消息用插件?谢谢!

没有内置命令调用 API 方法来执行此操作(至少没有记录的方法),因此没有某种插件就无法解决此问题。

就是说,为了执行您想要的操作,您需要将以下内容保存到名为例如set_status.py 在您的 Packages/User 文件夹中(与您的宏一起)。这提供了一个 set_status 命令,该命令采用名为 value 的值来显示文本,如宏文件的注释部分所述。

import sublime, sublime_plugin

class SetStatusCommand(sublime_plugin.TextCommand):
    def run(self, edit, value="set_status: use arg 'value' to set text"):
        self.view.window ().status_message (value)

这使用的 API 与您在宏文件注释中提到的不同; status_message 完成在状态栏中显示一条消息,等待几秒钟,然后将其删除的工作,这使得该命令易于实施。

如果你想要更多的控制(即改变持续时间),你需要修改它来调用你的宏文件已经提到的 API 命令:view.set_status()sublime.set_timeout()