src/Pure/PIDE/markup_tree.scala
changeset 56299 8201790fdeb9
parent 55820 61869776ce1f
child 56300 8346b664fa7a
--- a/src/Pure/PIDE/markup_tree.scala	Wed Mar 26 21:01:09 2014 +0100
+++ b/src/Pure/PIDE/markup_tree.scala	Thu Mar 27 10:43:43 2014 +0100
@@ -20,6 +20,9 @@
 
   val empty: Markup_Tree = new Markup_Tree(Branches.empty)
 
+  def merge(trees: List[Markup_Tree]): Markup_Tree =
+    (empty /: trees)(_ ++ _)
+
   def merge_disjoint(trees: List[Markup_Tree]): Markup_Tree =
     trees match {
       case Nil => empty
@@ -157,8 +160,12 @@
   }
 
   def ++ (other: Markup_Tree): Markup_Tree =
-    (this /: other.branches)({ case (tree, (range, entry)) =>
-      ((tree ++ entry.subtree) /: entry.markup)({ case (t, elem) => t + Text.Info(range, elem) }) })
+    if (this eq other) this
+    else if (branches.isEmpty) other
+    else
+      (this /: other.branches)({ case (tree, (range, entry)) =>
+        ((tree ++ entry.subtree) /: entry.markup)(
+          { case (t, elem) => t + Text.Info(range, elem) }) })
 
   def to_XML(root_range: Text.Range, text: CharSequence, filter: XML.Elem => Boolean): XML.Body =
   {