clarified initialization;
authorwenzelm
Wed, 15 Mar 2017 14:04:58 +0100
changeset 65260 ff9cc2f38dd3
parent 65259 41d12227d5dc
child 65261 034c49653a8e
clarified initialization;
src/Tools/jEdit/src/plugin.scala
--- a/src/Tools/jEdit/src/plugin.scala	Wed Mar 15 13:49:39 2017 +0100
+++ b/src/Tools/jEdit/src/plugin.scala	Wed Mar 15 14:04:58 2017 +0100
@@ -356,6 +356,30 @@
     }
   }
 
+
+  /* mode provider */
+
+  private var orig_mode_provider: ModeProvider = null
+  private var pide_mode_provider: ModeProvider = null
+
+  def init_mode_provider()
+  {
+    orig_mode_provider = ModeProvider.instance
+    if (orig_mode_provider.isInstanceOf[ModeProvider]) {
+      pide_mode_provider = new Token_Markup.Mode_Provider(orig_mode_provider)
+      ModeProvider.instance = pide_mode_provider
+    }
+  }
+
+  def exit_mode_provider()
+  {
+    if (ModeProvider.instance == pide_mode_provider)
+      ModeProvider.instance = orig_mode_provider
+  }
+
+
+  /* start and stop */
+
   override def start()
   {
     /* strict initialization */
@@ -382,9 +406,7 @@
       spell_checker.update(options.value)
 
       SyntaxUtilities.setStyleExtender(new Syntax_Style.Extender)
-      if (ModeProvider.instance.isInstanceOf[ModeProvider])
-        ModeProvider.instance = new Token_Markup.Mode_Provider(ModeProvider.instance)
-
+      init_mode_provider()
       JEdit_Lib.jedit_text_areas.foreach(Completion_Popup.Text_Area.init _)
 
       val resources = new JEdit_Resources(JEdit_Sessions.session_base(options.value))
@@ -410,6 +432,7 @@
   override def stop()
   {
     JEdit_Lib.jedit_text_areas.foreach(Completion_Popup.Text_Area.exit _)
+    exit_mode_provider()
 
     if (startup_failure.isEmpty) {
       options.value.save_prefs()