Plugins 升华文本2-程序启动时运行插件

Plugins 升华文本2-程序启动时运行插件,plugins,sublimetext2,Plugins,Sublimetext2,我正在尝试创建一个插件,根据当前操作系统切换字体设置。我用Dropbox同步了我所有的设置,我在工作时用Mac,在家里用Windows。我相信我已经创建了一个可以工作的插件(虽然可能并不完美,因为这是我第一次尝试插件和python),但当我试图在Sublime Text 2启动时运行它时,我的问题就来了 我已经搜索到了互联网的尽头,却找不到一篇关于“在启动时运行插件”的文章,这让我觉得这是不可能的,或者说这很容易做到,以至于没有人想到要写这篇文章 这是我的密码: import sublime i

我正在尝试创建一个插件,根据当前操作系统切换字体设置。我用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文件夹中设置
首选项(Windows).升华设置
首选项(OSX).升华设置
,但它们似乎没有被选中。其他人也注意到了这个问题:

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

我知道这是一个老问题,最初的海报是关于Sublime Text 2的,但我刚刚为自己解决了一个类似的问题,Sublime Text 3提供了一个方便的方法

如果您定义了一个模块级的
plugin\u loaded
函数,Sublime Text 3将在插件加载时执行您的代码


我写了一篇文章。

我知道Sublime软件包控制插件会在启动时运行,所以这绝对是可能的。由于我实际上并不需要此功能,因此无法直接回答您的问题,但是,
Package Control.py
文件很可能包含您问题的答案<代码>首选项->浏览软件包
然后转到软件包控制文件夹。祝你好运@谢谢你的指导。我签出了
Package Control.py
,在最底部有一个set\u超时调用,等待了2秒钟,其效果是:升华启动后立即启动Package Control,这样就不会导致任何键绑定、设置等错误。感谢您的帮助。我很惊讶没有其他方法可以做到这一点,因为这似乎不是一种可靠的方法来知道何时加载了设置。我已经将它添加到我的插件中,它可以正常工作。只要升华在2秒钟内启动:)谢谢Josh,我一定会研究升级升华文本3的插件代码,如果不需要依赖任意的超时计数,那就太好了。嗨Josh,我更新了我的插件代码,现在效果很好。谢谢你的提示。这里是最后的插件代码:import sublime,sublime_plugin def plugin_loaded():s=sublime.load_设置(“Preferences.sublime设置”),如果sublime.platform()==“osx”:s.set(“font_face”,“Courier”)其他:s.set(“font_face”,“Consolas”)sublime.save_设置(“Preferences.sublime设置”)