268 }) match { case Text.Info(_, info :: _) :: _ => Some(info) case _ => None } |
268 }) match { case Text.Info(_, info :: _) :: _ => Some(info) case _ => None } |
269 } |
269 } |
270 |
270 |
271 |
271 |
272 private val active_include = |
272 private val active_include = |
273 Set(Markup.BROWSER, Markup.GRAPHVIEW, Markup.SENDBACK, Markup.DIALOG) |
273 Set(Markup.BROWSER, Markup.GRAPHVIEW, Markup.SENDBACK, Markup.DIALOG, Markup.SIMP_TRACE) |
274 |
274 |
275 def active(range: Text.Range): Option[Text.Info[XML.Elem]] = |
275 def active(range: Text.Range): Option[Text.Info[XML.Elem]] = |
276 snapshot.select_markup(range, Some(active_include), command_state => |
276 snapshot.select_markup(range, Some(active_include), command_state => |
277 { |
277 { |
278 case Text.Info(info_range, elem @ Protocol.Dialog(_, serial, _)) |
278 case Text.Info(info_range, elem @ Protocol.Dialog(_, serial, _)) |
279 if !command_state.results.defined(serial) => |
279 if !command_state.results.defined(serial) => |
280 Some(Text.Info(snapshot.convert(info_range), elem)) |
280 Some(Text.Info(snapshot.convert(info_range), elem)) |
281 case Text.Info(info_range, elem) => |
281 case Text.Info(info_range, elem) => |
282 if (elem.name == Markup.BROWSER || |
282 if (elem.name == Markup.BROWSER || |
283 elem.name == Markup.GRAPHVIEW || |
283 elem.name == Markup.GRAPHVIEW || |
284 elem.name == Markup.SENDBACK) |
284 elem.name == Markup.SENDBACK || |
|
285 elem.name == Markup.SIMP_TRACE) |
285 Some(Text.Info(snapshot.convert(info_range), elem)) |
286 Some(Text.Info(snapshot.convert(info_range), elem)) |
286 else None |
287 else None |
287 }) match { case Text.Info(_, info) :: _ => Some(info) case _ => None } |
288 }) match { case Text.Info(_, info) :: _ => Some(info) case _ => None } |
288 |
289 |
289 |
290 |