more uniform Markup.notation vs. Markup.expression;
authorwenzelm
Wed, 18 Dec 2024 16:03:07 +0100
changeset 81630 5b87f8dacd8e
parent 81629 79079d94095b
child 81631 2d4838ffb67e
more uniform Markup.notation vs. Markup.expression;
src/Pure/PIDE/markup.scala
src/Pure/PIDE/rendering.scala
--- a/src/Pure/PIDE/markup.scala	Wed Dec 18 14:53:31 2024 +0100
+++ b/src/Pure/PIDE/markup.scala	Wed Dec 18 16:03:07 2024 +0100
@@ -179,9 +179,9 @@
 
   val EXPRESSION = "expression"
   object Expression {
-    def unapply(markup: Markup): Option[String] =
+    def unapply(markup: Markup): Option[(String, String)] =
       markup match {
-        case Markup(EXPRESSION, props) => Some(Kind.get(props))
+        case Markup(EXPRESSION, props) => Some((Kind.get(props), Name.get(props)))
         case _ => None
       }
 
--- a/src/Pure/PIDE/rendering.scala	Wed Dec 18 14:53:31 2024 +0100
+++ b/src/Pure/PIDE/rendering.scala	Wed Dec 18 16:03:07 2024 +0100
@@ -172,6 +172,14 @@
       Markup.TFREE -> "free type variable",
       Markup.TVAR -> "schematic type variable")
 
+  def tooltip_text(markup: String, kind: String, name: String): String = {
+    val a = kind.nonEmpty
+    val b = name.nonEmpty
+    val k = Word.implode(Word.explode('_', kind))
+    if (!a && !b) markup
+    else markup + ": " + k + if_proper(a && b, " ") + if_proper(b, quote(name))
+  }
+
 
   /* entity focus */
 
@@ -716,18 +724,11 @@
             Some(info.add_info_text(r0, "language: " + lang.description))
 
           case (info, Text.Info(r0, XML.Elem(Markup.Notation(kind, name), _))) =>
-            val a = kind.nonEmpty
-            val b = name.nonEmpty
-            val k = Word.implode(Word.explode('_', kind))
-            val description =
-              if (!a && !b) "notation"
-              else "notation: " + k + if_proper(a && b, " ") + if_proper(b, quote(name))
+            val description = Rendering.tooltip_text(Markup.NOTATION, kind, name)
             Some(info.add_info_text(r0, description, ord = 1))
 
-          case (info, Text.Info(r0, XML.Elem(Markup.Expression(kind), _))) =>
-            val description =
-              if (kind.isEmpty) "expression"
-              else "expression: " + Word.implode(Word.explode('_', kind))
+          case (info, Text.Info(r0, XML.Elem(Markup.Expression(kind, name), _))) =>
+            val description = Rendering.tooltip_text(Markup.EXPRESSION, kind, name)
             Some(info.add_info_text(r0, description, ord = 1))
 
           case (info, Text.Info(r0, XML.Elem(Markup(Markup.MARKDOWN_PARAGRAPH, _), _))) =>