Skip to content

Instantly share code, notes, and snippets.

@mattst
Last active May 11, 2020 14:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattst/c88a0853a952c3e37630230f5499ba7a to your computer and use it in GitHub Desktop.
Save mattst/c88a0853a952c3e37630230f5499ba7a to your computer and use it in GitHub Desktop.
Sublime Text plugin to add, remove, or toggle packages in the ignored_packages setting
#
# Save as AlterIgnoredPackages.py in your user packages directory.
# e.g. ~/.config/sublime-text-3/Packages/User/AlterIgnoredPackages.py
#
# Here are some key binding examples:
#
# {
# "keys": ["ctrl+k", "ctrl+z"],
# "command": "alter_ignored_packages",
# "args": {"add_list": ["PackageName1"],
# "remove_list": ["PackageName2", "PackageName3"] }
# },
# {
# "keys": ["ctrl+k", "ctrl+shift+z"],
# "command": "alter_ignored_packages",
# "args": {"toggle_list": ["PackageName"] }
# },
#
import sublime
import sublime_plugin
class AlterIgnoredPackagesCommand(sublime_plugin.ApplicationCommand):
def run(self, add_list=[], remove_list=[], toggle_list=[]):
preferences = sublime.load_settings("Preferences.sublime-settings")
ignored_packages = preferences.get("ignored_packages", [])
for package_name in add_list:
if package_name not in ignored_packages:
ignored_packages.append(package_name)
for package_name in remove_list:
if package_name in ignored_packages:
ignored_packages.remove(package_name)
for package_name in toggle_list:
if package_name in ignored_packages:
ignored_packages.remove(package_name)
else:
ignored_packages.append(package_name)
preferences.set("ignored_packages", ignored_packages)
sublime.save_settings("Preferences.sublime-settings")
# Unfortunately the automatic ST reloading settings
# message overwrites this message a bit too quickly.
message = "ignored_packages: " + str(ignored_packages)
sublime.status_message(message)
# Code to overwrite the automatic ST reloading settings status
# message with the plugin's status message. If using comment out
# the sublime.status_message(message) line above and adjust the
# delay as needed (e.g. 500 ms is not long enough on my system).
#
# timeout_in_milli_seconds = 1000
# sublime.set_timeout_async(lambda: sublime.status_message(message),
# timeout_in_milli_seconds)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment