src/Tools/jEdit/src/isabelle_rendering.scala
changeset 49358 0fa351b1bd14
parent 49356 6e0c0ffb6ec7
child 49406 38db4832b210
equal deleted inserted replaced
49357:34ac36642a31 49358:0fa351b1bd14
    95   val writeln_color = color_value("writeln_color")
    95   val writeln_color = color_value("writeln_color")
    96   val warning_color = color_value("warning_color")
    96   val warning_color = color_value("warning_color")
    97   val error_color = color_value("error_color")
    97   val error_color = color_value("error_color")
    98   val error1_color = color_value("error1_color")
    98   val error1_color = color_value("error1_color")
    99   val bad_color = color_value("bad_color")
    99   val bad_color = color_value("bad_color")
   100   val hilite_color = color_value("hilite_color")
   100   val intensify_color = color_value("intensify_color")
   101   val quoted_color = color_value("quoted_color")
   101   val quoted_color = color_value("quoted_color")
   102   val subexp_color = color_value("subexp_color")
   102   val highlight_color = color_value("highlight_color")
   103   val hyperlink_color = color_value("hyperlink_color")
   103   val hyperlink_color = color_value("hyperlink_color")
   104   val keyword1_color = color_value("keyword1_color")
   104   val keyword1_color = color_value("keyword1_color")
   105   val keyword2_color = color_value("keyword2_color")
   105   val keyword2_color = color_value("keyword2_color")
   106 
   106 
   107   val tfree_color = color_value("tfree_color")
   107   val tfree_color = color_value("tfree_color")
   152   }
   152   }
   153 
   153 
   154 
   154 
   155   /* markup selectors */
   155   /* markup selectors */
   156 
   156 
   157   private val subexp_include =
   157   private val highlight_include =
   158     Set(Isabelle_Markup.SORT, Isabelle_Markup.TYP, Isabelle_Markup.TERM, Isabelle_Markup.PROP,
   158     Set(Isabelle_Markup.SORT, Isabelle_Markup.TYP, Isabelle_Markup.TERM, Isabelle_Markup.PROP,
   159       Isabelle_Markup.ML_TYPING, Isabelle_Markup.TOKEN_RANGE, Isabelle_Markup.ENTITY,
   159       Isabelle_Markup.ML_TYPING, Isabelle_Markup.TOKEN_RANGE, Isabelle_Markup.ENTITY,
   160       Isabelle_Markup.PATH, Isabelle_Markup.TYPING, Isabelle_Markup.FREE, Isabelle_Markup.SKOLEM,
   160       Isabelle_Markup.PATH, Isabelle_Markup.TYPING, Isabelle_Markup.FREE, Isabelle_Markup.SKOLEM,
   161       Isabelle_Markup.BOUND, Isabelle_Markup.VAR, Isabelle_Markup.TFREE, Isabelle_Markup.TVAR,
   161       Isabelle_Markup.BOUND, Isabelle_Markup.VAR, Isabelle_Markup.TFREE, Isabelle_Markup.TVAR,
   162       Isabelle_Markup.ML_SOURCE, Isabelle_Markup.DOCUMENT_SOURCE)
   162       Isabelle_Markup.ML_SOURCE, Isabelle_Markup.DOCUMENT_SOURCE)
   163 
   163 
   164   def subexp(range: Text.Range): Option[Text.Info[Color]] =
   164   def highlight(range: Text.Range): Option[Text.Info[Color]] =
   165   {
   165   {
   166     snapshot.select_markup(range, Some(subexp_include),
   166     snapshot.select_markup(range, Some(highlight_include),
   167         {
   167         {
   168           case Text.Info(info_range, XML.Elem(Markup(name, _), _)) if subexp_include(name) =>
   168           case Text.Info(info_range, XML.Elem(Markup(name, _), _)) if highlight_include(name) =>
   169             Text.Info(snapshot.convert(info_range), subexp_color)
   169             Text.Info(snapshot.convert(info_range), highlight_color)
   170         }) match { case Text.Info(_, info) #:: _ => Some(info) case _ => None }
   170         }) match { case Text.Info(_, info) #:: _ => Some(info) case _ => None }
   171   }
   171   }
   172 
   172 
   173 
   173 
   174   private val hyperlink_include = Set(Isabelle_Markup.ENTITY, Isabelle_Markup.PATH)
   174   private val hyperlink_include = Set(Isabelle_Markup.ENTITY, Isabelle_Markup.PATH)
   344     else
   344     else
   345       for {
   345       for {
   346         Text.Info(r, result) <-
   346         Text.Info(r, result) <-
   347           snapshot.cumulate_markup[(Option[Protocol.Status], Option[Color])](
   347           snapshot.cumulate_markup[(Option[Protocol.Status], Option[Color])](
   348             range, (Some(Protocol.Status.init), None),
   348             range, (Some(Protocol.Status.init), None),
   349             Some(Protocol.command_status_markup + Isabelle_Markup.BAD + Isabelle_Markup.HILITE),
   349             Some(Protocol.command_status_markup + Isabelle_Markup.BAD + Isabelle_Markup.INTENSIFY),
   350             {
   350             {
   351               case (((Some(status), color), Text.Info(_, XML.Elem(markup, _))))
   351               case (((Some(status), color), Text.Info(_, XML.Elem(markup, _))))
   352               if (Protocol.command_status_markup(markup.name)) =>
   352               if (Protocol.command_status_markup(markup.name)) =>
   353                 (Some(Protocol.command_status(status, markup)), color)
   353                 (Some(Protocol.command_status(status, markup)), color)
   354               case (_, Text.Info(_, XML.Elem(Markup(Isabelle_Markup.BAD, _), _))) =>
   354               case (_, Text.Info(_, XML.Elem(Markup(Isabelle_Markup.BAD, _), _))) =>
   355                 (None, Some(bad_color))
   355                 (None, Some(bad_color))
   356               case (_, Text.Info(_, XML.Elem(Markup(Isabelle_Markup.HILITE, _), _))) =>
   356               case (_, Text.Info(_, XML.Elem(Markup(Isabelle_Markup.INTENSIFY, _), _))) =>
   357                 (None, Some(hilite_color))
   357                 (None, Some(intensify_color))
   358             })
   358             })
   359         color <-
   359         color <-
   360           (result match {
   360           (result match {
   361             case (Some(status), opt_color) =>
   361             case (Some(status), opt_color) =>
   362               if (status.is_unprocessed) Some(unprocessed1_color)
   362               if (status.is_unprocessed) Some(unprocessed1_color)