diff options
author | Marius Ungureanu <therzok@gmail.com> | 2018-03-29 15:56:00 +0300 |
---|---|---|
committer | Marius Ungureanu <teromario@yahoo.com> | 2018-04-11 22:00:08 +0300 |
commit | db3978a23137b7161daec6641da25c098f1e9fc0 (patch) | |
tree | a671a9421d55865e9dcbb7abd5b00280f57e5d89 /main/src/core | |
parent | 6d9d8f23c4fe87c5a7d67fa08a4d5d642e8ae012 (diff) |
[Ide] Avoid loading display bindings every time a document is opened
Diffstat (limited to 'main/src/core')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DisplayBindingService.cs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DisplayBindingService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DisplayBindingService.cs index a3a32e15df..3dab14d1b4 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DisplayBindingService.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DisplayBindingService.cs @@ -39,12 +39,31 @@ namespace MonoDevelop.Ide.Gui { public static class DisplayBindingService { + const string extensionPath = "/MonoDevelop/Ide/DisplayBindings"; + + static DisplayBindingService () + { + AddinManager.ExtensionChanged += OnExtensionChanged; + UpdateExtensionObjects (); + } +
+ static void OnExtensionChanged (object sender, ExtensionEventArgs args)
+ { + if (args.PathChanged (extensionPath)) + UpdateExtensionObjects ();
+ } + + static void UpdateExtensionObjects () + { + registeredObjects = AddinManager.GetExtensionObjects (extensionPath); + } + + static object [] registeredObjects; private static List<IDisplayBinding> runtimeBindings = new List<IDisplayBinding>(); public static IEnumerable<T> GetBindings<T> () { - return runtimeBindings.OfType<T>().Concat(AddinManager.GetExtensionObjects ("/MonoDevelop/Ide/DisplayBindings") - .OfType<T> ()); + return runtimeBindings.OfType<T> ().Concat (registeredObjects.OfType<T> ()); } public static void RegisterRuntimeDisplayBinding(IDisplayBinding binding) |