src/Tools/VSCode/src/vscode_resources.scala
changeset 66101 0f0f294e314f
parent 66100 d1ad5a7458c2
child 66138 f7ef4c50b747
equal deleted inserted replaced
66100:d1ad5a7458c2 66101:0f0f294e314f
    19   /* internal state */
    19   /* internal state */
    20 
    20 
    21   sealed case class State(
    21   sealed case class State(
    22     models: Map[JFile, Document_Model] = Map.empty,
    22     models: Map[JFile, Document_Model] = Map.empty,
    23     caret: Option[(JFile, Line.Position)] = None,
    23     caret: Option[(JFile, Line.Position)] = None,
       
    24     overlays: Document.Overlays = Document.Overlays.empty,
    24     pending_input: Set[JFile] = Set.empty,
    25     pending_input: Set[JFile] = Set.empty,
    25     pending_output: Set[JFile] = Set.empty)
    26     pending_output: Set[JFile] = Set.empty)
    26   {
    27   {
    27     def update_models(changed: Traversable[(JFile, Document_Model)]): State =
    28     def update_models(changed: Traversable[(JFile, Document_Model)]): State =
    28       copy(
    29       copy(
    47       Document.Blobs(
    48       Document.Blobs(
    48         (for {
    49         (for {
    49           (_, model) <- models.iterator
    50           (_, model) <- models.iterator
    50           blob <- model.get_blob
    51           blob <- model.get_blob
    51         } yield (model.node_name -> blob)).toMap)
    52         } yield (model.node_name -> blob)).toMap)
       
    53 
       
    54     def change_overlay(insert: Boolean, file: JFile,
       
    55         command: Command, fn: String, args: List[String]): State =
       
    56       copy(
       
    57         overlays =
       
    58           if (insert) overlays.insert(command, fn, args)
       
    59           else overlays.remove(command, fn, args),
       
    60         pending_input = pending_input + file)
    52   }
    61   }
    53 
    62 
    54 
    63 
    55   /* caret */
    64   /* caret */
    56 
    65 
   179             text <- read_file_content(file)
   188             text <- read_file_content(file)
   180             model1 <- model.change_text(text)
   189             model1 <- model.change_text(text)
   181           } yield (file, model1)).toList
   190           } yield (file, model1)).toList
   182         st.update_models(changed_models)
   191         st.update_models(changed_models)
   183       })
   192       })
       
   193 
       
   194 
       
   195   /* overlays */
       
   196 
       
   197   def node_overlays(name: Document.Node.Name): Document.Node.Overlays =
       
   198     state.value.overlays(name)
       
   199 
       
   200   def insert_overlay(command: Command, fn: String, args: List[String]): Unit =
       
   201     state.change(_.change_overlay(true, node_file(command.node_name), command, fn, args))
       
   202 
       
   203   def remove_overlay(command: Command, fn: String, args: List[String]): Unit =
       
   204     state.change(_.change_overlay(false, node_file(command.node_name), command, fn, args))
   184 
   205 
   185 
   206 
   186   /* resolve dependencies */
   207   /* resolve dependencies */
   187 
   208 
   188   def resolve_dependencies(
   209   def resolve_dependencies(