ctrl+shift+p filters: :st2 :st3 :win :osx :linux
文档

事件

包控制 3.0 提供了一个 API,使包开发者能够更容易地响应影响其包的事件。事件 API 与 Sublime Text 包加载/卸载处理程序协同使用。

以下事件可以被检测到:

请注意,此 API 仅从包控制 3.0 版本开始提供。尚未升级到 3.0 的用户将无法使用所有包的package_control模块,并将出现错误。为了解决这个问题,包控制 1.x 和 2.0 的旧通道文件将仅在 2015 年初仅包含包控制自身。这确保了只有包控制 3.0 用户将安装和升级包,从而使包开发者能够使用新的事件 API 和 依赖项

Sublime Text 加载/卸载处理程序

事件 API 是一个附加信息层,它允许在 Sublime Text 3 中的插件加载/卸载处理程序内部运行的代码。plugin_loaded()-plugin_unloaded()。这些处理程序分别在包安装/启用或移除/禁用时自动执行。

这些处理程序适用的一部分是,包控制在执行操作时总是禁用并重新启用包。这有助于确保 Sublime Text 不会解析部分提取的文件内容,也不会保留即将写入或删除的文件的文件系统锁。

在 Sublime Text 2 上运行的包也有略微不同的处理程序。下面的示例将包含代码和注释,说明如何支持 ST2 和 ST3。

API

事件 API 位于package_control.events模块。它有四个函数。每个函数返回一个字符串形式的版本号,如果包没有处于指定的状态,则返回None

示例代码

以下代码应位于您的包根目录下的某个.py文件中。

import sys


package_name = 'My Package'


def plugin_loaded():
    from package_control import events

    if events.install(package_name):
        print('Installed %s!' % events.install(package_name))
    elif events.post_upgrade(package_name):
        print('Upgraded to %s!' % events.post_upgrade(package_name))


def plugin_unloaded():
    from package_control import events

    if events.pre_upgrade(package_name):
        print('Upgrading from %s!' % events.pre_upgrade(package_name))
    elif events.remove(package_name):
        print('Removing %s!' % events.remove(package_name))


# Compat with ST2
if sys.version_info < (3,):
    plugin_loaded()
    unload_handler = plugin_unloaded