35 |
35 |
36 lazy val results = reverse_results.reverse |
36 lazy val results = reverse_results.reverse |
37 |
37 |
38 def add_result(result: XML.Tree): State = copy(reverse_results = result :: reverse_results) |
38 def add_result(result: XML.Tree): State = copy(reverse_results = result :: reverse_results) |
39 |
39 |
40 def add_markup(node: Markup_Tree.Node): State = copy(markup = markup + node) |
40 def add_markup(node: Markup_Tree.Node[Any]): State = copy(markup = markup + node) |
41 |
41 |
42 def markup_root_node: Markup_Tree.Node = |
42 def markup_root_node: Markup_Tree.Node[Any] = |
43 new Markup_Tree.Node(command.range, XML.Elem(Markup(Markup.STATUS, Nil), status)) |
43 new Markup_Tree.Node(command.range, XML.Elem(Markup(Markup.STATUS, Nil), status)) |
44 def markup_root: Markup_Tree = markup + markup_root_node |
44 def markup_root: Markup_Tree = markup + markup_root_node |
45 |
45 |
46 |
46 |
47 /* markup */ |
47 /* markup */ |
48 |
48 |
49 lazy val highlight: List[Markup_Tree.Node] = |
49 lazy val highlight: List[Markup_Tree.Node[Any]] = |
50 { |
50 { |
51 markup.filter(_.info match { |
51 markup.filter(_.info match { |
52 case Command.HighlightInfo(_, _) => true |
52 case Command.HighlightInfo(_, _) => true |
53 case _ => false |
53 case _ => false |
54 }).flatten(markup_root_node) |
54 }).flatten(markup_root_node) |
55 } |
55 } |
56 |
56 |
57 private lazy val types: List[Markup_Tree.Node] = |
57 private lazy val types: List[Markup_Tree.Node[Any]] = |
58 markup.filter(_.info match { |
58 markup.filter(_.info match { |
59 case Command.TypeInfo(_) => true |
59 case Command.TypeInfo(_) => true |
60 case _ => false }).flatten(markup_root_node) |
60 case _ => false }).flatten(markup_root_node) |
61 |
61 |
62 def type_at(pos: Text.Offset): Option[String] = |
62 def type_at(pos: Text.Offset): Option[String] = |
69 } |
69 } |
70 case None => None |
70 case None => None |
71 } |
71 } |
72 } |
72 } |
73 |
73 |
74 private lazy val refs: List[Markup_Tree.Node] = |
74 private lazy val refs: List[Markup_Tree.Node[Any]] = |
75 markup.filter(_.info match { |
75 markup.filter(_.info match { |
76 case Command.RefInfo(_, _, _, _) => true |
76 case Command.RefInfo(_, _, _, _) => true |
77 case _ => false }).flatten(markup_root_node) |
77 case _ => false }).flatten(markup_root_node) |
78 |
78 |
79 def ref_at(pos: Text.Offset): Option[Markup_Tree.Node] = |
79 def ref_at(pos: Text.Offset): Option[Markup_Tree.Node[Any]] = |
80 refs.find(_.range.contains(pos)) |
80 refs.find(_.range.contains(pos)) |
81 |
81 |
82 |
82 |
83 /* message dispatch */ |
83 /* message dispatch */ |
84 |
84 |
157 lazy val symbol_index = new Symbol.Index(source) |
157 lazy val symbol_index = new Symbol.Index(source) |
158 |
158 |
159 |
159 |
160 /* markup */ |
160 /* markup */ |
161 |
161 |
162 def decode_range(range: Text.Range, info: Any): Markup_Tree.Node = |
162 def decode_range(range: Text.Range, info: Any): Markup_Tree.Node[Any] = |
163 new Markup_Tree.Node(symbol_index.decode(range), info) |
163 new Markup_Tree.Node(symbol_index.decode(range), info) |
164 |
164 |
165 |
165 |
166 /* accumulated results */ |
166 /* accumulated results */ |
167 |
167 |