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