2013-04-23 106 views
3

我試圖創建一個插件來切換基於當前OS上的font_face設置。我使用Dropbox同步所有設置,並在家中使用Mac和Windows。我相信我已經創建了一個可以工作的插件(雖然可能並不完美,因爲這是我第一次嘗試插件和Python)!但是當我在Sublime Text 2啓動時嘗試使其運行時,我的問題就出現了。崇高文本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") 

這個偉大的工程,但我必須每次啓動程序,它的工作時間手動調用它。

我能夠通過執行以下操作來使插件在加載後立即運行,但似乎在Default和User設置實際加載之前運行,結果是它將所有其他設置:

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

如何得到這個插件在啓動時運行的任何想法,將不勝感激。 非常感謝。

+0

我知道Sublime Package Control插件在啓動時運行,所以它絕對有可能。因爲我實際上並不需要這個功能,所以我不能給你一個直接的答案,然而,'Package Control.py'文件很可能包含你的問題的答案。 'Preferences - > Browse Packages'然後進入Package Control文件夾。祝你好運! – bdiamante 2013-04-24 20:04:44

+0

@bdiamante:感謝您的指導。我查了一下'Package Control.py',在最下面有一個set_timeout調用,等待2秒鐘,註釋的結果如下:在Sublime啓動後不久就啓動包控制,所以它不會導致任何鍵綁定錯誤,設置等。感謝您的幫助。我很驚訝沒有其他的方式來做到這一點,因爲它似乎不是一個可靠的方式來知道何時加載設置。我已經將此添加到我的插件,它的工作原理。只要Sublime在2秒內開始:) – Sean 2013-04-24 22:47:00

回答

2

我知道這是一個老問題,樓主問的崇高文字2,但我只是解決了類似的問題我自己,和崇高的文本3提供了一個方便的方式來做到這一點。

如果你定義的模塊級​​功能,崇高的文本3將執行你的代碼,只要你的插件加載。

,我寫了一個blog post about this with more details and some sample code

+0

感謝Josh,我一定會考慮升級我的Sublime Text 3的插件代碼,如果不需要依賴任意的超時計數,那真是太好了。 – Sean 2014-03-04 18:50:22

+1

嗨喬希,我更新了我的插件代碼,現在它工作的很好。謝謝你的提示。下面是最終插件代碼: 進口崇高,sublime_plugin 高清plugin_loaded(): S = sublime.load_settings( 「Preferences.sublime的設置」) 如果sublime.platform()== 「OSX」: 秒。 set(「font_face」,'Courier') else: s.set(「font_face」,'Consolas') sublime.save_settings(「Preferences.sublime-settings」) – Sean 2014-03-30 03:22:44

+0

很高興幫助! :) – 2014-03-31 17:35:09