309 case (_, Document.Node.Clear()) => node.clear |
309 case (_, Document.Node.Clear()) => node.clear |
310 |
310 |
311 case (name, Document.Node.Edits(text_edits)) => |
311 case (name, Document.Node.Edits(text_edits)) => |
312 val commands0 = node.commands |
312 val commands0 = node.commands |
313 val commands1 = edit_text(text_edits, commands0) |
313 val commands1 = edit_text(text_edits, commands0) |
314 val commands2 = recover_spans(syntax, name, node.perspective, commands1) |
314 val commands2 = recover_spans(syntax, name, node.perspective._2, commands1) |
315 node.update_commands(commands2) |
315 node.update_commands(commands2) |
316 |
316 |
317 case (_, Document.Node.Deps(_)) => node |
317 case (_, Document.Node.Deps(_)) => node |
318 |
318 |
319 case (name, Document.Node.Perspective(text_perspective)) => |
319 case (name, Document.Node.Perspective(required, text_perspective)) => |
320 val perspective = command_perspective(node, text_perspective) |
320 val perspective = (required, command_perspective(node, text_perspective)) |
321 if (node.perspective same perspective) node |
321 if (node.same_perspective(perspective)) node |
322 else |
322 else |
323 node.update_perspective(perspective).update_commands( |
323 node.update_perspective(perspective).update_commands( |
324 consolidate_spans(syntax, reparse_limit, name, perspective, node.commands)) |
324 consolidate_spans(syntax, reparse_limit, name, perspective._2, node.commands)) |
325 } |
325 } |
326 } |
326 } |
327 |
327 |
328 def text_edits( |
328 def text_edits( |
329 base_syntax: Outer_Syntax, |
329 base_syntax: Outer_Syntax, |
351 if (reparse_set(name) && !commands.isEmpty) |
351 if (reparse_set(name) && !commands.isEmpty) |
352 node.update_commands(reparse_spans(syntax, name, commands, commands.head, commands.last)) |
352 node.update_commands(reparse_spans(syntax, name, commands, commands.head, commands.last)) |
353 else node |
353 else node |
354 val node2 = (node1 /: edits)(text_edit(syntax, reparse_limit, _, _)) |
354 val node2 = (node1 /: edits)(text_edit(syntax, reparse_limit, _, _)) |
355 |
355 |
356 if (!(node.perspective same node2.perspective)) |
356 if (!(node.same_perspective(node2.perspective))) |
357 doc_edits += (name -> Document.Node.Perspective(node2.perspective)) |
357 doc_edits += |
|
358 (name -> Document.Node.Perspective(node2.perspective._1, node2.perspective._2)) |
358 |
359 |
359 doc_edits += (name -> Document.Node.Edits(diff_commands(commands, node2.commands))) |
360 doc_edits += (name -> Document.Node.Edits(diff_commands(commands, node2.commands))) |
360 |
361 |
361 nodes += (name -> node2) |
362 nodes += (name -> node2) |
362 } |
363 } |