2013-10-22 23 views
1

我正在爲崇高文本開發幾個軟件包,爲了避免複製和粘貼大量代碼,我開始將我的類移動到單獨的文件中。到目前爲止,我一直在避免這種情況,因爲在我目前的工作流程中,對不在主插件文件中的文件所做的更改在保存時不會更新,只有在重新啓動sublime時纔會生效。爲多文件Sublime Text 2打包開發,無需重新啓動

有沒有辦法重新加載一個包,包括它的所有文件,而無需重新啓動Sublime Text?

回答

2

您實際上不必重新啓動編輯器。儘管如此,你將不得不重構你的插件。實質上,您可以從一些頂級文件加載插件文件。作爲一個例子,看看Package Control。我也在PersistentRegexHighlight中做過(儘管包控制解決方案可能更強大(我的確是基於此),但仍然不如保存特定文件,但比重啓更好!事實上,您可能會綁定當你修改一個子文件on_post_save事件自動保存頂層文件。

+0

難以置信!Th非常感謝!現在我只是直接撕掉你的reloader.py文件,我希望你不介意。 – DudeOnRock

+0

我不介意從頂層文件保存(這是我重新加載插件直到我將其分離到不同文件中的方式)。我的意圖是失去撤消能力以及在每次重新啓動時會出現sublime windows打開的事實不同的桌面都將在一個桌面上打開。雖然想要掛在'on_post_save'上,但我可以在我有一段時間的時候放棄這個想法。 – DudeOnRock

+0

謝謝,我其實不知道這件事。所以從我對'reloader.py'的理解中,它只是重新加載了'sys.modules'中的所有模塊,對吧?如何/何時調用'reloader'呢? – MattDMo

0

unofficial docs

崇高的文本,因爲他們改變將重新從封裝的頂級Python模塊(可能是因爲您正在編輯一個.py文件)。相比之下,Python子包將不會自動重新加載,並且在開發插件時會導致混淆。一般來說,最好在更改插件文件後重新啓動Sublime Text,以便所有更改都可以生效。

不幸的是,插件不會加載到從控制檯(按Ctrl`)可見範圍,所以你不能只是reload()它。 編輯但是,您可以從呼叫reload()在您的頂級插件文件中,詳見@ skuroda的answer

你必須做出關於何時將課程分成單獨文件與將它們集中在一個整體集合中的決定。有50個文件,每個文件只有兩個或三個函數定義是單向的矯枉過正,而有一個文件中有20個類每個都有10個或15個方法的文件會在另一個文件中出現問題,所以只需做一些對特定項目來說最好的方法。根據我的經驗,在任何受支持的操作系統(除XP之外,出於某種原因...),殺死/重新啓動ST2都不會花太長時間,所以希望對您的工作流程沒有太大的延遲。我給出的一個建議是,如果啓動時間過長,則只需使用額外插件中的基本功能來創建便攜式安裝(如果您使用的是Windows)。

祝你好運!

2

我個人認爲最簡單的解決方案是安裝Package Reloader,只是把一個新的文件在我的插件名爲.build的頂級目錄。保存您的頂部-level插件文件並享受不必重啓

幾乎不需要重組代碼

+0

謝謝!您的解決方案聽起來像是可能比當前接受的答案更加模塊化,簡潔和簡單。我目前正在做其他事情,但最終會回到這個位置,那就是我何時會給你一個建議。如果它像你聲稱的那樣工作,我會接受你的答案。 – DudeOnRock