src/Tools/jEdit/src/isabelle_rendering.scala
changeset 49674 dbadb4d03cbc
parent 49554 7b7bd2d7661d
child 49700 2d1cbdf6a68b
equal deleted inserted replaced
49673:2a088cff1e7b 49674:dbadb4d03cbc
   179   /* markup selectors */
   179   /* markup selectors */
   180 
   180 
   181   private val highlight_include =
   181   private val highlight_include =
   182     Set(Isabelle_Markup.SORT, Isabelle_Markup.TYP, Isabelle_Markup.TERM, Isabelle_Markup.PROP,
   182     Set(Isabelle_Markup.SORT, Isabelle_Markup.TYP, Isabelle_Markup.TERM, Isabelle_Markup.PROP,
   183       Isabelle_Markup.ML_TYPING, Isabelle_Markup.TOKEN_RANGE, Isabelle_Markup.ENTITY,
   183       Isabelle_Markup.ML_TYPING, Isabelle_Markup.TOKEN_RANGE, Isabelle_Markup.ENTITY,
   184       Isabelle_Markup.PATH, Isabelle_Markup.TYPING, Isabelle_Markup.FREE, Isabelle_Markup.SKOLEM,
   184       Isabelle_Markup.PATH, Isabelle_Markup.SORTING, Isabelle_Markup.TYPING, Isabelle_Markup.FREE,
   185       Isabelle_Markup.BOUND, Isabelle_Markup.VAR, Isabelle_Markup.TFREE, Isabelle_Markup.TVAR,
   185       Isabelle_Markup.SKOLEM, Isabelle_Markup.BOUND, Isabelle_Markup.VAR, Isabelle_Markup.TFREE,
   186       Isabelle_Markup.ML_SOURCE, Isabelle_Markup.DOCUMENT_SOURCE)
   186       Isabelle_Markup.TVAR, Isabelle_Markup.ML_SOURCE, Isabelle_Markup.DOCUMENT_SOURCE)
   187 
   187 
   188   def highlight(range: Text.Range): Option[Text.Info[Color]] =
   188   def highlight(range: Text.Range): Option[Text.Info[Color]] =
   189   {
   189   {
   190     snapshot.select_markup(range, Some(highlight_include),
   190     snapshot.select_markup(range, Some(highlight_include),
   191         {
   191         {
   297       Isabelle_Markup.TVAR -> "schematic type variable",
   297       Isabelle_Markup.TVAR -> "schematic type variable",
   298       Isabelle_Markup.ML_SOURCE -> "ML source",
   298       Isabelle_Markup.ML_SOURCE -> "ML source",
   299       Isabelle_Markup.DOCUMENT_SOURCE -> "document source")
   299       Isabelle_Markup.DOCUMENT_SOURCE -> "document source")
   300 
   300 
   301   private val tooltip_elements =
   301   private val tooltip_elements =
   302     Set(Isabelle_Markup.ENTITY, Isabelle_Markup.TYPING, Isabelle_Markup.ML_TYPING,
   302     Set(Isabelle_Markup.ENTITY, Isabelle_Markup.SORTING, Isabelle_Markup.TYPING,
   303       Isabelle_Markup.PATH) ++ tooltips.keys
   303       Isabelle_Markup.ML_TYPING, Isabelle_Markup.PATH) ++ tooltips.keys
   304 
   304 
   305   private def string_of_typing(kind: String, body: XML.Body): String =
   305   private def string_of_typing(kind: String, body: XML.Body): String =
   306     Pretty.string_of(List(Pretty.block(XML.Text(kind) :: Pretty.Break(1) :: body)),
   306     Pretty.string_of(List(Pretty.block(XML.Text(kind) :: Pretty.Break(1) :: body)),
   307       margin = options.int("jedit_tooltip_margin"))
   307       margin = options.int("jedit_tooltip_margin"))
   308 
   308 
   320             add(prev, r, (true, kind1 + " " + quote(name)))
   320             add(prev, r, (true, kind1 + " " + quote(name)))
   321           case (prev, Text.Info(r, XML.Elem(Isabelle_Markup.Path(name), _)))
   321           case (prev, Text.Info(r, XML.Elem(Isabelle_Markup.Path(name), _)))
   322           if Path.is_ok(name) =>
   322           if Path.is_ok(name) =>
   323             val jedit_file = Isabelle.thy_load.append(snapshot.node_name.dir, Path.explode(name))
   323             val jedit_file = Isabelle.thy_load.append(snapshot.node_name.dir, Path.explode(name))
   324             add(prev, r, (true, "file " + quote(jedit_file)))
   324             add(prev, r, (true, "file " + quote(jedit_file)))
   325           case (prev, Text.Info(r, XML.Elem(Markup(Isabelle_Markup.TYPING, _), body))) =>
   325           case (prev, Text.Info(r, XML.Elem(Markup(name, _), body)))
       
   326           if name == Isabelle_Markup.SORTING || name == Isabelle_Markup.TYPING =>
   326             add(prev, r, (true, string_of_typing("::", body)))
   327             add(prev, r, (true, string_of_typing("::", body)))
   327           case (prev, Text.Info(r, XML.Elem(Markup(Isabelle_Markup.ML_TYPING, _), body))) =>
   328           case (prev, Text.Info(r, XML.Elem(Markup(Isabelle_Markup.ML_TYPING, _), body))) =>
   328             add(prev, r, (false, string_of_typing("ML:", body)))
   329             add(prev, r, (false, string_of_typing("ML:", body)))
   329           case (prev, Text.Info(r, XML.Elem(Markup(name, _), _)))
   330           case (prev, Text.Info(r, XML.Elem(Markup(name, _), _)))
   330           if tooltips.isDefinedAt(name) => add(prev, r, (true, tooltips(name)))
   331           if tooltips.isDefinedAt(name) => add(prev, r, (true, tooltips(name)))