src/Tools/VSCode/src/server.scala
changeset 66241 8f39d60b943d
parent 66216 d4949bae0bad
child 66389 fa473c07d86c
--- a/src/Tools/VSCode/src/server.scala	Fri Jun 30 21:55:07 2017 +0200
+++ b/src/Tools/VSCode/src/server.scala	Sat Jul 01 16:22:47 2017 +0200
@@ -31,6 +31,7 @@
   val isabelle_tool = Isabelle_Tool("vscode_server", "VSCode Language Server for PIDE", args =>
   {
     try {
+      var all_known = false
       var log_file: Option[Path] = None
       var dirs: List[Path] = Nil
       var logic = default_logic
@@ -43,6 +44,7 @@
 Usage: isabelle vscode_server [OPTIONS]
 
   Options are:
+    -A           explore theory name space of all known sessions (potentially slow)
     -L FILE      enable logging on FILE
     -d DIR       include session directory
     -l NAME      logic session name (default ISABELLE_LOGIC=""" + quote(default_logic) + """)
@@ -53,6 +55,7 @@
 
   Run the VSCode Language Server protocol (JSON RPC) over stdin/stdout.
 """,
+        "A" -> (_ => all_known = true),
         "L:" -> (arg => log_file = Some(Path.explode(File.standard_path(arg)))),
         "d:" -> (arg => dirs = dirs ::: List(Path.explode(File.standard_path(arg)))),
         "l:" -> (arg => logic = arg),
@@ -66,7 +69,9 @@
 
       val log = Logger.make(log_file)
       val channel = new Channel(System.in, System.out, log, verbose)
-      val server = new Server(channel, options, logic, dirs, modes, system_mode, log)
+      val server =
+        new Server(channel, options, session_name = logic, session_dirs = dirs,
+          all_known = all_known, modes = modes, system_mode = system_mode, log = log)
 
       // prevent spurious garbage on the main protocol channel
       val orig_out = System.out
@@ -90,6 +95,7 @@
   options: Options,
   session_name: String = Server.default_logic,
   session_dirs: List[Path] = Nil,
+  all_known: Boolean = false,
   modes: List[String] = Nil,
   system_mode: Boolean = false,
   log: Logger = No_Logger)
@@ -265,7 +271,7 @@
         }
 
         val session_base =
-          Sessions.session_base(options, session_name, dirs = session_dirs, all_known = true)
+          Sessions.session_base(options, session_name, dirs = session_dirs, all_known = all_known)
         val resources = new VSCode_Resources(options, session_base, log)
           {
             override def commit(change: Session.Change): Unit =