181 |
181 |
182 |
182 |
183 /* incoming edits */ |
183 /* incoming edits */ |
184 |
184 |
185 def handle_edits(name: String, master_dir: String, |
185 def handle_edits(name: String, master_dir: String, |
186 header: Document.Node_Header, edits: List[Document.Node.Edit[Text.Edit]]) |
186 header: Document.Node_Header, edits: List[Document.Node.Edit[Text.Edit, Text.Perspective]]) |
187 //{{{ |
187 //{{{ |
188 { |
188 { |
189 val syntax = current_syntax() |
189 val syntax = current_syntax() |
190 val previous = global_state().history.tip.version |
190 val previous = global_state().history.tip.version |
191 |
191 |
194 val name = Thy_Header.base_name(s) |
194 val name = Thy_Header.base_name(s) |
195 if (thy_load.is_loaded(name)) name |
195 if (thy_load.is_loaded(name)) name |
196 else file_store.append(master_dir, Thy_Header.thy_path(Path.explode(s))) |
196 else file_store.append(master_dir, Thy_Header.thy_path(Path.explode(s))) |
197 } |
197 } |
198 def norm_use(s: String): String = file_store.append(master_dir, Path.explode(s)) |
198 def norm_use(s: String): String = file_store.append(master_dir, Path.explode(s)) |
199 val norm_header = Document.Node.norm_header[Text.Edit](norm_import, norm_use, header) |
199 val norm_header = |
|
200 Document.Node.norm_header[Text.Edit, Text.Perspective](norm_import, norm_use, header) |
200 |
201 |
201 val text_edits = (name, norm_header) :: edits.map(edit => (name, edit)) |
202 val text_edits = (name, norm_header) :: edits.map(edit => (name, edit)) |
202 val result = Future.fork { Thy_Syntax.text_edits(syntax, previous.join, text_edits) } |
203 val result = Future.fork { Thy_Syntax.text_edits(syntax, previous.join, text_edits) } |
203 val change = |
204 val change = |
204 global_state.change_yield(_.extend_history(previous, text_edits, result.map(_._2))) |
205 global_state.change_yield(_.extend_history(previous, text_edits, result.map(_._2))) |