创建sublime文本插件支持ST2和ST3

时间:2014-04-01 21:39:39

标签: python git sublimetext2 sublimetext sublimetext3

我为Sublime Text 2制作了几个插件,但是当Sublime Text 3出现时,它有一个新的Python引擎,我的插件停止工作。我设法通过逐个调试所有问题来修复它们,但现在我有两个版本。原始版本从Package Manager顺利安装,但新版本只能从我从git签出的代码分支中安装。

如何正确管理sublime文本的插件以支持多个版本?

是否有关于如何有效执行此操作的博客文章?

1 个答案:

答案 0 :(得分: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时所拥有的功能。