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) |