support for syslog messages;
authorwenzelm
Wed, 28 Dec 2016 20:17:01 +0100
changeset 64692 ccf017e2f2b4
parent 64691 db2b21a52f20
child 64693 92bcb79a465e
support for syslog messages; clarified shutdown;
src/Tools/VSCode/src/server.scala
--- a/src/Tools/VSCode/src/server.scala	Wed Dec 28 19:58:55 2016 +0100
+++ b/src/Tools/VSCode/src/server.scala	Wed Dec 28 20:17:01 2016 +0100
@@ -183,6 +183,16 @@
     }
 
 
+  /* syslog */
+
+  private val all_messages =
+    Session.Consumer[Prover.Message](getClass.getName) {
+      case output: Prover.Output if output.is_syslog =>
+        channel.log_writeln(XML.content(output.message))
+      case _ =>
+    }
+
+
   /* init and exit */
 
   def init(id: Protocol.Id)
@@ -226,6 +236,7 @@
       session.phase_changed += session_phase
 
       session.commands_changed += commands_changed
+      session.all_messages += all_messages
 
       session.start(receiver =>
         Isabelle_Process(options = options, logic = session_name, dirs = session_dirs,
@@ -248,11 +259,12 @@
             Session.Consumer(getClass.getName) {
               case Session.Inactive =>
                 session.phase_changed -= session_phase
+                session.commands_changed -= commands_changed
+                session.all_messages -= all_messages
                 reply("")
               case _ =>
             }
           session.phase_changed += session_phase
-          session.commands_changed -= commands_changed
           session.stop()
           delay_input.revoke()
           delay_output.revoke()