src/Pure/PIDE/command.scala
changeset 72848 d5d0e36eda16
parent 72846 a23e0964f3c3
child 72869 015a61936c13
equal deleted inserted replaced
72847:9dda93a753b1 72848:d5d0e36eda16
   129 
   129 
   130   sealed case class Markup_Index(status: Boolean, chunk_name: Symbol.Text_Chunk.Name)
   130   sealed case class Markup_Index(status: Boolean, chunk_name: Symbol.Text_Chunk.Name)
   131 
   131 
   132   object Markups
   132   object Markups
   133   {
   133   {
       
   134     type Entry = (Markup_Index, Markup_Tree)
   134     val empty: Markups = new Markups(Map.empty)
   135     val empty: Markups = new Markups(Map.empty)
   135     def init(markup: Markup_Tree): Markups = new Markups(Map(Markup_Index.markup -> markup))
   136     def init(markup: Markup_Tree): Markups = new Markups(Map(Markup_Index.markup -> markup))
       
   137     def make(args: TraversableOnce[Entry]): Markups = (empty /: args)(_ + _)
   136     def merge(args: TraversableOnce[Markups]): Markups = (empty /: args)(_ ++ _)
   138     def merge(args: TraversableOnce[Markups]): Markups = (empty /: args)(_ ++ _)
   137   }
   139   }
   138 
   140 
   139   final class Markups private(private val rep: Map[Markup_Index, Markup_Tree])
   141   final class Markups private(private val rep: Map[Markup_Index, Markup_Tree])
   140   {
   142   {
   144       rep.getOrElse(index, Markup_Tree.empty)
   146       rep.getOrElse(index, Markup_Tree.empty)
   145 
   147 
   146     def add(index: Markup_Index, markup: Text.Markup): Markups =
   148     def add(index: Markup_Index, markup: Text.Markup): Markups =
   147       new Markups(rep + (index -> (this(index) + markup)))
   149       new Markups(rep + (index -> (this(index) + markup)))
   148 
   150 
   149     def + (entry: (Markup_Index, Markup_Tree)): Markups =
   151     def + (entry: Markups.Entry): Markups =
   150     {
   152     {
   151       val (index, tree) = entry
   153       val (index, tree) = entry
   152       new Markups(rep + (index -> (this(index).merge(tree, Text.Range.full, Markup.Elements.full))))
   154       new Markups(rep + (index -> (this(index).merge(tree, Text.Range.full, Markup.Elements.full))))
   153     }
   155     }
   154 
   156