資源簡(jiǎn)介
Package+Control;打開Sublime Text 3,選擇菜單:Preference-->Browse Package... 瀏覽插件,將下載的文件覆蓋到該目錄下
代碼片段和文件信息
import?os
import?sys
import?sublime
import?sublime_plugin
if?sys.version_info?>=?(3):
????import?importlib
????import?zipimport
st_build?=?int(sublime.version())
mod_prefix?=?‘package_control‘
#?ST3?loads?each?package?as?a?module?so?it?needs?an?extra?prefix
if?sys.version_info?>=?(3):
????bare_mod_prefix?=?mod_prefix
????mod_prefix?=?‘Package?Control.‘?+?mod_prefix
????from?imp?import?reload
#?When?reloading?the?package?we?also?need?to?reload?the?base?“package_control“
#?module?in?ST3.?This?flag?inidicates?we?should?re-add?the?PC?package?path
#?to?the?beginning?of?sys.path?before?we?try?to?reload.
do_insert?=?False
is_zipped?=?False
commands_name?=?mod_prefix?+?‘.commands‘
if?commands_name?in?sys.modules?and?sys.version_info?>=?(3)?and?st_build?3112:
????#?Unfortunately?with?ST3?the?ZipLoader?does?not?“properly“
????#?implement?load_module()?instead?loading?the?code?from?the?zip
????#?file?when?the?object?is?instantiated.?This?means?that?calling
????#?reload()?by?itself?does?nothing.?Instead?we?have?to?refresh?the
????#?actual?source?code?and?then?call?reload().
????pc_package_path?=?os.path.dirname(__file__)
????if?pc_package_path.endswith(‘.sublime-package‘):
????????refreshing_zip_loader?=?sublime_plugin.ZipLoader(pc_package_path)
????????pc_zip_loader?=?sys.modules[commands_name].__loader__
????????if?hasattr(pc_zip_loader?‘contents‘)?and?hasattr(pc_zip_loader?‘packages‘):
????????????pc_zip_loader.contents?=?refreshing_zip_loader.contents
????????????pc_zip_loader.packages?=?refreshing_zip_loader.packages
????????if?pc_package_path?in?zipimport._zip_directory_cache:
????????????del?zipimport._zip_directory_cache[pc_package_path]
????????is_zipped?=?True
????importlib.invalidate_caches()
????do_insert?=?True
#?Python?allows?reloading?modules?on?the?fly?which?allows?us?to?do?live?upgrades.
#?The?only?caveat?to?this?is?that?you?have?to?reload?in?the?dependency?order.
#
#?Thus?is?module?A?depends?on?B?and?we?don‘t?reload?B?before?A?when?A?is?reloaded
#?it?will?still?have?a?reference?to?the?old?B.?Thus?we?hard-code?the?dependency
#?order?of?the?various?Package?Control?modules?so?they?get?reloaded?properly.
#
#?There?are?solutions?for?doing?this?all?programatically?but?this?is?much?easier
#?to?understand.
reload_mods?=?[]
for?mod?in?sys.modules:
????if?mod[0:15]?in?set([‘package_control‘?‘Package?Control‘])?and?sys.modules[mod]?is?not?None:
????????reload_mods.append(mod)
mods_load_order?=?[
????‘‘
????‘.sys_path‘
????‘.text‘
????‘.cache‘
????‘.file_not_found_error‘
????‘.open_compat‘
????‘.http_cache‘
????‘.console_write‘
????‘.unicode‘
????‘.clear_directory‘
????‘.show_error‘
????‘.cmd‘
????‘.processes‘
????‘.settings‘
????‘.show_quick_panel‘
????‘.thread_progress‘
????‘.package_io‘
????‘.semver‘
????‘.versions‘
????‘.deps.asn1crypto._errors‘
????‘.deps.asn1crypto._ffi‘
????‘.deps.asn1crypto._int‘
????‘.deps.asn1crypto._elliptic_curve‘
????‘.deps.asn1crypto._types‘
????‘.deps.asn1crypto._inet
評(píng)論
共有 條評(píng)論