【发布时间】:2013-04-23 19:08:05
【问题描述】:
我正在尝试创建一个插件来根据当前操作系统切换 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-settings 和 Preferences (OSX).sublime-settings,但它们似乎没有被选中。其他人也注意到了这个问题:http://www.sublimetext.com/forum/viewtopic.php?f=2&t=5135
任何关于如何让这个插件在启动时运行的想法将不胜感激。 非常感谢。
【问题讨论】:
-
我知道 Sublime Package Control 插件在启动时运行,所以这绝对是可能的。由于我实际上并不需要此功能,因此我无法直接回答您,但是,
Package Control.py文件很可能包含您问题的答案。Preferences -> Browse Packages然后转到 Package Control 文件夹。祝你好运! -
@bdiamante:感谢您的指导。我检查了
Package Control.py,在最底部有一个 set_timeout 调用等待 2 秒,并附有如下注释:在 Sublime 启动后不久启动包控制,因此它不会导致任何键绑定、设置等错误。 谢谢您的帮助。我很惊讶没有其他方法可以做到这一点,因为它似乎不是知道何时加载设置的可靠方法。我已将此添加到我的插件中,并且可以正常工作。只要 Sublime 在 2 秒内启动 :)
标签: plugins sublimetext2