3

我正在尝试创建一个插件来根据当前操作系统切换 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() 方法,但这似乎真的很hacky。

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

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

任何关于如何让这个插件在启动时运行的想法将不胜感激。非常感谢。

4

1 回答 1

2

我知道这是一个老问题,最初的发帖人问的是 Sublime Text 2,但我刚刚为自己解决了一个类似的问题,Sublime Text 3 提供了一种方便的方法来做到这一点。

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

我写了一篇关于此的博客文章,其中包含更多详细信息和一些示例代码

于 2014-02-22T13:13:31.743 回答