547 if (Path.is_valid(name)) session.resources.append(node_name, Path.explode(name)) else name |
547 if (Path.is_valid(name)) session.resources.append(node_name, Path.explode(name)) else name |
548 |
548 |
549 def tooltips(elements: Markup.Elements, range: Text.Range): Option[Text.Info[List[XML.Tree]]] = |
549 def tooltips(elements: Markup.Elements, range: Text.Range): Option[Text.Info[List[XML.Tree]]] = |
550 { |
550 { |
551 val results = |
551 val results = |
552 snapshot.cumulate[Tooltip_Info](range, Tooltip_Info(range), elements, _ => |
552 snapshot.cumulate[Tooltip_Info](range, Tooltip_Info(range), elements, command_states => |
553 { |
553 { |
554 case (info, Text.Info(_, XML.Elem(Markup.Timing(t), _))) => Some(info + t) |
554 case (info, Text.Info(_, XML.Elem(Markup.Timing(t), _))) => Some(info + t) |
555 |
555 |
556 case (info, Text.Info(r0, XML.Elem(Markup(name, props @ Markup.Serial(serial)), body))) |
556 case (info, Text.Info(r0, msg @ XML.Elem(Markup(Markup.BAD, Markup.Serial(i)), body))) |
557 if Rendering.tooltip_message_elements(name) && body.nonEmpty => |
557 if body.nonEmpty => Some(info + (r0, i, msg)) |
558 Some(info + (r0, serial, XML.Elem(Markup(Markup.message(name), props), body))) |
558 |
|
559 case (info, Text.Info(r0, XML.Elem(Markup(name, props), _))) |
|
560 if Rendering.tooltip_message_elements(name) => |
|
561 for ((i, tree) <- Command.State.get_result_proper(command_states, props)) |
|
562 yield (info + (r0, i, tree)) |
559 |
563 |
560 case (info, Text.Info(r0, XML.Elem(Markup.Entity(kind, name), _))) |
564 case (info, Text.Info(r0, XML.Elem(Markup.Entity(kind, name), _))) |
561 if kind != "" && kind != Markup.ML_DEF => |
565 if kind != "" && kind != Markup.ML_DEF => |
562 val kind1 = Word.implode(Word.explode('_', kind)) |
566 val kind1 = Word.implode(Word.explode('_', kind)) |
563 val txt1 = |
567 val txt1 = |