src/Pure/Thy/thy_syntax.scala
changeset 52808 143f225e50f5
parent 52535 b7badd371e4d
child 52849 199e9fa5a5c2
equal deleted inserted replaced
52807:b859a180936b 52808:143f225e50f5
   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     }