【问题标题】:Create sublime text plugin support both ST2 and ST3创建 sublime text 插件同时支持 ST2 和 ST3
【发布时间】:2014-05-12 21:46:49
【问题描述】:
我为 Sublime Text 2 制作了几个插件,但是当 Sublime Text 3 出现时,它有一个新的 Python 引擎,我的插件停止工作了。我设法通过一一调试所有问题来修复它们,但现在我有两个版本。原来的可以从包管理器顺利安装,但是新的只能从我把它放在从 git 签出的代码分支中安装。
我应该如何正确管理 sublime text 的插件以支持多个版本?
有没有关于如何有效地做到这一点的博客文章?
【问题讨论】:
标签:
python
git
sublimetext2
sublimetext
sublimetext3
【解决方案1】:
您可以为不同的 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 时所具有的功能。