【问题标题】:How to detect set_user_setting event in Sublime Text 2如何在 Sublime Text 2 中检测 set_user_setting 事件
【发布时间】:2013-11-09 17:06:19
【问题描述】:

我想处理一个事件,当我更改位于Preferences.sublime-settings 内的color_scheme 设置以用于我正在为Sublime Text 2 编写的插件时触发。

我已经 read 使用 on_window_commandEventListener 但它似乎没有触发。

class MyPluginEvents(sublime_plugin.EventListener):
    def on_window_command(self, window, command_name, args):
        print " --- FIRE! --- "

我也尝试过post_window_command,但没有成功。有什么方法可以检测偏好何时发生变化?

【问题讨论】:

    标签: python sublimetext event-listener sublime-text-plugin


    【解决方案1】:

    您链接到的那些文档适用于 ST3。 Here 是 ST2 的文档。注意没有on_window_command。除此之外,您可能想看看Settings#add_on_change。我以前从未在 API 中使用过该方法,但根据描述,它应该可以满足您的需求。

    编辑

    知道您已经有了解决方案,但为其他人添加此解决方案。 您可能会绑定到一个事件,例如 on_loadon_new,因此该命令将在任何新创建的视图上运行。

    import sublime_plugin
    
    class TestCommand(sublime_plugin.TextCommand):
        def run(self, edit):
            settings = self.view.settings()
            settings.add_on_change("color_scheme", self.callback)
    
        def callback(self):
            print(self.view.settings().get("color_scheme"))
    

    【讨论】:

    • 谢谢,我去看看!
    • 我不确定如何在add_on_change 中注册回调,你能帮我举个例子吗?
    • 我已经用on_deactivated做到了
    • 我知道您有解决方案,但如果您愿意看,我添加了一个示例。
    猜你喜欢
    • 2012-08-11
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 2014-03-22
    相关资源
    最近更新 更多