插件移植指南

Sublime Text 3包含了Sublime Text 2在插件方面的一些重要区别,大多数插件需要至少少量的移植工作。更改为:

Python 3.3

Sublime Text 3使用Python 3.3,而Sublime Text 2使用Python 2.6。此外,在OS X上,不再使用Python的系统构建,而是Sublime Text与其自己的版本捆绑在一起。Windows和Linux也捆绑了自己的版本,就像以前一样。

过程外插件

插件现在在一个单独的进程中运行,plugin_host。从插件作者的角度来看,应该没有可观察到的区别,除了在插件主机中的崩溃将不再导致主应用程序。

异步事件

在崇高文本2,只有set_timeout()方法是线程安全的。在Sublime Text 3中,每个API方法是线程安全的。此外,现在有异步事件处理程序,使非阻塞代码更容易写:

当写线程代码时,请记住缓冲区将随着函数的运行而改变。

限制begin_edit()和end_edit()

begin_end()并且end_edit()不再直接访问,除非在某些特殊情况下。要获得的有效实例的唯一方式编辑目的是把你的代码放在一个TextCommand子类。在一般情况下,大多数的代码可以通过将码之间进行重构begin_edit()并end_edit()在一个TextCommand,然后通过运行该命令run_command()。

这种方法消除晃来晃去的问题编辑的对象,又保证了重复命令和宏的工作,因为他们应该。

压缩包

在Sublime Text3包能够从运行.sublime包(即改名为.ZIP文件)文件直接,而相比之下,Sublime Text2,它解压缩它们之前运行。

虽然在大多数更改中,这应该导致没有区别,重要的是要记住,如果你正在访问文件包中的文件。

导入模块

导入其他插件是Sublime Text3更简单,更健壮,可与常规import语句来完成,例如,import Default.comment将导入软件包/默认/ Comment.py。

启动时受限的API使用情况

由于plugin_host装载异步,是不可能使用API在进口的时间。这意味着你的模块中的所有顶级语句不能从调用任何函数崇高的模块。在启动期间,API处于休眠状态,并且将静默地忽略任何请求。