Sublime Text 2 - 在程序启动时运行插件

时间:2013-04-23 19:08:06

标签: plugins sublimetext2

我正在尝试创建一个插件来根据当前操作系统切换font_face设置。我使用Dropbox来同步我的所有设置,我在工作时使用Mac,在家中使用Windows。我相信我已经创建了一个可以工作的插件(虽然可能并不完美,因为这是我第一次尝试使用插件和python!)但是当我尝试让它在Sublime Text 2启动时运行时,问题出现了。

我似乎已经搜索到了互联网的终点,并且未能找到一篇关于“在启动时运行插件”的文章,这让我觉得这是不可能的,或者这样做很容易一个人想过要写一下。

这是我的代码:

import sublime
import sublime_plugin


class OsFontSwitcherCommand(sublime_plugin.ApplicationCommand):
def run(self):
    s = sublime.load_settings("Preferences.sublime-settings")

    if sublime.platform() == "osx":
        s.set("font_face", 'Courier')
    else:
        s.set("font_face", 'Consolas')

    sublime.save_settings("Preferences.sublime-settings")

这很好用,但每次启动程序时我都必须手动调用它。

我可以通过执行以下操作让插件在加载后立即运行,但它似乎在默认和用户设置实际加载之前运行,结果是它清除了我的所有其他设置:

import sublime
import sublime_plugin

s = sublime.load_settings("Preferences.sublime-settings")

if sublime.platform() == "osx":
    s.set("font_face", 'Courier')
else:
    s.set("font_face", 'Consolas')

sublime.save_settings("Preferences.sublime-settings")

我考虑使用set_timeout()方法,但这看起来真的很糟糕。

我想将其扩展为更加丰富的插件,以便您可以对Windows和OSX进行完整配置,并让它们始终根据当前操作系统正确加载。让它在启动时自动运行是关键。

我还尝试在我的/ Packages / User文件夹中创建Preferences (Windows).sublime-settingsPreferences (OSX).sublime-settings,但它们似乎没有被提取。其他人也注意到了这个问题:http://www.sublimetext.com/forum/viewtopic.php?f=2&t=5135

如何在启动时运行此插件的任何想法都将非常感激。 非常感谢。

1 个答案:

答案 0 :(得分:2)

我知道这是一个老问题,原始海报询问Sublime Text 2,但我刚刚为自己解决了类似问题,Sublime Text 3提供了一种方便的方法。

如果您定义了模块级plugin_loaded函数,Sublime Text 3将在您的插件加载时执行您的代码。

我写了blog post about this with more details and some sample code