equal
deleted
inserted
replaced
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( |