2014-04-01 64 views
1

我做了一些Sublime Text 2的插件,但是當Sublime Text 3出來時,它有一個新的Python引擎,我的插件停止工作。我設法通過逐個調試所有問題來修復它們,但現在我有兩個版本。原始安裝從包管理器順利,但新的只能從我從git檢出的代碼分支安裝。創建崇高的文本插件支持ST2和ST3

我應該如何妥善管理一個用於崇高文本的插件來支持多個版本?

是否有關於如何有效地做到這一點任何博客帖子?

回答

3

您可以爲不同版本的Sublime Text管理兩個不同的代碼分支。如果你看看周圍線200 example-repository.json和之後,你會看到這個例子:

// If your package is only compatible with specific builds of 
// Sublime Text, this will cause the package to be hidden from 
// users with incompatible versions. 
{ 
    "details": "https://github.com/wbond/sublime_alignment", 
    "releases": [ 
     { 
      // This branch (default: "master") is for Sublime Text 2. 
      // Remember: The sublime_text key is required! 
      "sublime_text": "<3000", 
      "details": "https://github.com/wbond/sublime_alignment" 
     } 
     { 
      // This branch ("st3") is for Sublime Text 3 (and above). 
      // You can specify as many releases as you want. 
      "sublime_text": ">=3000", 
      "details": "https://github.com/wbond/sublime_alignment/tree/st3" 
     } 
    ] 
}, 

這樣,如果你有不同版本的ST不同的代碼庫,甚至不同的構建ST3,如果您依賴於某種構建中實現的某些API更改,最終用戶將無縫獲取您希望的插件版本。

根據您使用API​​的方式,這可能是不可能的,但從長遠來看,最簡單的方法是在ST2和ST3之間協調代碼。如果您需要使用一些高級的功能,您可以隨時使用這種類型的構造:

if sublime.version() >= 3000: 
    do_advanced_stuff() 
else: 
    do_st2_stuff() 

分裂你的代碼,並優雅地失敗,它可能會在某些情況下,這ST2下運行某些插件剛剛獲得」如果使用ST3,就不會有功能。