55from . import themes
66
77from .overlay import with_ignored_overlay
8+ from .utils .decorators import debounce
89from .utils .logging import log
910from .utils .path import PACKAGE_NAME
1011
1112PACKAGE_SETTINGS = "A File Icon.sublime-settings"
13+ USER_SETTINGS = "Preferences.sublime-settings"
1214
15+ _cached_packages = []
1316_cached_settings = {}
1417_uuid = "9ebcce78-4cac-4089-8bd7-d551c634b052"
1518
1619
1720def add_listener ():
1821 log ("Initializing settings" )
1922 path = "Packages/{0}/{1}" .format (PACKAGE_NAME , PACKAGE_SETTINGS )
20- settings = sublime .load_settings (PACKAGE_SETTINGS )
23+ package_settings = sublime .load_settings (PACKAGE_SETTINGS )
2124 for key in sublime .decode_value (sublime .load_resource (path )).keys ():
2225 if key not in ("dev_mode" , "dev_trace" ):
23- _cached_settings [key ] = settings .get (key )
26+ _cached_settings [key ] = package_settings .get (key )
27+
28+ user_settings = sublime .load_settings (USER_SETTINGS )
29+ _cached_packages = user_settings .get ("ignored_packages" )
2430
2531 icons .init ()
2632 themes .patch (_cached_settings )
2733 aliases .check (_cached_settings ["aliases" ])
28- sublime .load_settings (PACKAGE_SETTINGS ).add_on_change (_uuid , _on_change )
34+
35+ package_settings .add_on_change (_uuid , _on_change_package )
36+ user_settings .add_on_change (_uuid , _on_change_user )
2937
3038
3139def clear_listener ():
3240 sublime .load_settings (PACKAGE_SETTINGS ).clear_on_change (_uuid )
41+ sublime .load_settings (USER_SETTINGS ).clear_on_change (_uuid )
3342
3443
35- def _on_change ():
44+ def _on_change_package ():
3645 is_aliases_changed = False
3746 is_icons_changed = False
3847 is_force_mode_changed = False
@@ -55,12 +64,18 @@ def _on_change():
5564 aliases .check (_cached_settings ["aliases" ])
5665 if is_icons_changed :
5766 log ("Icons settings changed" )
58- _patch_theme ( True )
67+ themes . patch ( _cached_settings , overwrite = True )
5968 elif is_force_mode_changed :
6069 log ("Force mode settings changed" )
61- _patch_theme (False )
62-
63-
64- @with_ignored_overlay
65- def _patch_theme (overwrite ):
66- themes .patch (_cached_settings , overwrite )
70+ themes .patch (_cached_settings )
71+
72+
73+ @debounce (2000 )
74+ def _on_change_user ():
75+ global _cached_packages
76+ settings = sublime .load_settings (USER_SETTINGS )
77+ packages = settings .get ("ignored_packages" )
78+ if packages != _cached_packages :
79+ _cached_packages = packages
80+ themes .patch (_cached_settings , on_demand = True )
81+ aliases .check (_cached_settings ["aliases" ], on_demand = True )
0 commit comments