src/Pure/PIDE/rendering.scala
changeset 72858 cb0c407fbc6e
parent 72856 3a27e6f83ce1
child 72869 015a61936c13
equal deleted inserted replaced
72857:a9e091ccd450 72858:cb0c407fbc6e
   209 
   209 
   210   val tooltip_message_elements =
   210   val tooltip_message_elements =
   211     Markup.Elements(Markup.WRITELN, Markup.INFORMATION, Markup.WARNING, Markup.LEGACY, Markup.ERROR,
   211     Markup.Elements(Markup.WRITELN, Markup.INFORMATION, Markup.WARNING, Markup.LEGACY, Markup.ERROR,
   212       Markup.BAD)
   212       Markup.BAD)
   213 
   213 
       
   214   val message_elements = Markup.Elements(message_pri.keySet)
   214   val warning_elements = Markup.Elements(Markup.WARNING, Markup.LEGACY)
   215   val warning_elements = Markup.Elements(Markup.WARNING, Markup.LEGACY)
   215   val error_elements = Markup.Elements(Markup.ERROR)
   216   val error_elements = Markup.Elements(Markup.ERROR)
   216 
   217 
   217   val caret_focus_elements = Markup.Elements(Markup.ENTITY)
   218   val caret_focus_elements = Markup.Elements(Markup.ENTITY)
   218 
   219 
   518     }
   519     }
   519     else Nil
   520     else Nil
   520   }
   521   }
   521 
   522 
   522 
   523 
   523   /* message underline color */
   524   /* messages */
   524 
   525 
   525   def message_underline_color(elements: Markup.Elements, range: Text.Range)
   526   def message_underline_color(elements: Markup.Elements, range: Text.Range)
   526     : List[Text.Info[Rendering.Color.Value]] =
   527     : List[Text.Info[Rendering.Color.Value]] =
   527   {
   528   {
   528     val results =
   529     val results =
   532         })
   533         })
   533     for {
   534     for {
   534       Text.Info(r, pri) <- results
   535       Text.Info(r, pri) <- results
   535       color <- Rendering.message_underline_color.get(pri)
   536       color <- Rendering.message_underline_color.get(pri)
   536     } yield Text.Info(r, color)
   537     } yield Text.Info(r, color)
       
   538   }
       
   539 
       
   540   def text_messages(range: Text.Range): List[Text.Info[XML.Tree]] =
       
   541   {
       
   542     val results =
       
   543       snapshot.cumulate[Vector[XML.Tree]](range, Vector.empty, Rendering.message_elements,
       
   544         states =>
       
   545           {
       
   546             case (res, Text.Info(_, elem)) =>
       
   547               elem.markup.properties match {
       
   548                 case Markup.Serial(i) =>
       
   549                   states.collectFirst(
       
   550                   {
       
   551                     case st if st.results.get(i).isDefined =>
       
   552                       res :+ st.results.get(i).get
       
   553                   })
       
   554                 case _ => None
       
   555               }
       
   556             case _ => None
       
   557           })
       
   558 
       
   559     var seen_serials = Set.empty[Long]
       
   560     val seen: XML.Tree => Boolean =
       
   561     {
       
   562       case XML.Elem(Markup(_, Markup.Serial(i)), _) =>
       
   563         val b = seen_serials(i); seen_serials += i; b
       
   564       case _ => false
       
   565     }
       
   566     for {
       
   567       Text.Info(range, trees) <- results
       
   568       tree <- trees
       
   569       if !seen(tree)
       
   570     } yield Text.Info(range, tree)
   537   }
   571   }
   538 
   572 
   539 
   573 
   540   /* tooltips */
   574   /* tooltips */
   541 
   575