48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
import sublime
|
|
import sublime_plugin
|
|
|
|
from ..show_error import show_error
|
|
from ..package_manager import PackageManager
|
|
from ..preferences_filename import preferences_filename
|
|
|
|
|
|
class DisablePackageCommand(sublime_plugin.WindowCommand):
|
|
"""
|
|
A command that adds a package to Sublime Text's ignored packages list
|
|
"""
|
|
|
|
def run(self):
|
|
manager = PackageManager()
|
|
packages = manager.list_all_packages()
|
|
self.settings = sublime.load_settings(preferences_filename())
|
|
ignored = self.settings.get('ignored_packages')
|
|
if not ignored:
|
|
ignored = []
|
|
self.package_list = list(set(packages) - set(ignored))
|
|
self.package_list.sort()
|
|
if not self.package_list:
|
|
show_error('There are no enabled packages to disable.')
|
|
return
|
|
self.window.show_quick_panel(self.package_list, self.on_done)
|
|
|
|
def on_done(self, picked):
|
|
"""
|
|
Quick panel user selection handler - disables the selected package
|
|
|
|
:param picked:
|
|
An integer of the 0-based package name index from the presented
|
|
list. -1 means the user cancelled.
|
|
"""
|
|
|
|
if picked == -1:
|
|
return
|
|
package = self.package_list[picked]
|
|
ignored = self.settings.get('ignored_packages')
|
|
if not ignored:
|
|
ignored = []
|
|
ignored.append(package)
|
|
self.settings.set('ignored_packages', ignored)
|
|
sublime.save_settings(preferences_filename())
|
|
sublime.status_message(('Package %s successfully added to list of ' +
|
|
'disabled packages - restarting Sublime Text may be required') %
|
|
package)
|