improved handling of markup-information with command=null
authorimmler@in.tum.de
Fri, 22 May 2009 17:36:45 +0200
changeset 34573c3bdaea2dd6a
parent 34572 15abc5f5f40a
child 34574 ea86cc4e04c7
child 34576 daa397b6401c
improved handling of markup-information with command=null
src/Tools/jEdit/src/prover/Prover.scala
     1.1 --- a/src/Tools/jEdit/src/prover/Prover.scala	Fri May 22 16:47:11 2009 +0200
     1.2 +++ b/src/Tools/jEdit/src/prover/Prover.scala	Fri May 22 17:36:45 2009 +0200
     1.3 @@ -181,34 +181,43 @@
     1.4                      output_info.event(result.toString)
     1.5                      command.status = Command.Status.FAILED
     1.6                      command_change(command)
     1.7 -                  case XML.Elem(kind, attr, body) =>
     1.8 +                  case XML.Elem(kind, attr, body)
     1.9 +                  if command != null =>
    1.10                      // TODO: assuming that begin, end, id are present in attributes
    1.11                      val begin = get_attr(attr, Markup.OFFSET).get.toInt - 1
    1.12                      val end = get_attr(attr, Markup.END_OFFSET).get.toInt - 1
    1.13                      val markup_id = get_attr(attr, Markup.ID).get
    1.14 -                    kind match {
    1.15 -                      case Markup.ML_TYPING =>
    1.16 -                        val info = body.first.asInstanceOf[XML.Text].content
    1.17 -                        command.markup_root += command.markup_node(begin, end, TypeInfo(info))
    1.18 -                      case Markup.ML_REF =>
    1.19 -                        body match {
    1.20 -                          case List(XML.Elem(Markup.ML_DEF, attr, _)) =>
    1.21 -                            command.markup_root += command.markup_node(begin, end,
    1.22 -                              RefInfo(get_attr(attr, Markup.FILE),
    1.23 -                                      get_attr(attr, Markup.LINE).map(Integer.parseInt),
    1.24 -                                      get_attr(attr, Markup.ID),
    1.25 -                                      get_attr(attr, Markup.OFFSET).map(Integer.parseInt)))
    1.26 -                          case _ =>
    1.27 -                        }
    1.28 -                      case kind =>
    1.29 -                        if (!running)
    1.30 -                          commands.get(markup_id).map (cmd =>
    1.31 -                          cmd.markup_root += cmd.markup_node(begin, end, OuterInfo(kind)))
    1.32 -                        else {
    1.33 -                          command.markup_root += command.markup_node(begin, end, HighlightInfo(kind))
    1.34 -                        }
    1.35 +                    if (kind == Markup.ML_TYPING) {
    1.36 +                      val info = body.first.asInstanceOf[XML.Text].content
    1.37 +                      command.markup_root += command.markup_node(begin, end, TypeInfo(info))
    1.38 +                    } else if (kind == Markup.ML_REF) {
    1.39 +                      body match {
    1.40 +                        case List(XML.Elem(Markup.ML_DEF, attr, _)) =>
    1.41 +                          command.markup_root += command.markup_node(begin, end,
    1.42 +                            RefInfo(get_attr(attr, Markup.FILE),
    1.43 +                                    get_attr(attr, Markup.LINE).map(Integer.parseInt),
    1.44 +                                    get_attr(attr, Markup.ID),
    1.45 +                                    get_attr(attr, Markup.OFFSET).map(Integer.parseInt)))
    1.46 +                        case _ =>
    1.47 +                      }
    1.48 +                    } else {
    1.49 +                      command.markup_root += command.markup_node(begin, end, HighlightInfo(kind))
    1.50                      }
    1.51                      command_change(command)
    1.52 +                  case XML.Elem(kind, attr, body)
    1.53 +                  if command == null =>
    1.54 +                    // TODO: This is mostly irrelevant information on removed commands, but it can
    1.55 +                    // also be outer-syntax-markup since there is no id in props (fix that?)
    1.56 +                    val begin = get_attr(attr, Markup.OFFSET).map(_.toInt - 1)
    1.57 +                    val end = get_attr(attr, Markup.END_OFFSET).map(_.toInt - 1)
    1.58 +                    val markup_id = get_attr(attr, Markup.ID)
    1.59 +                    if (!running && begin.isDefined && end.isDefined && markup_id.isDefined)
    1.60 +                      commands.get(markup_id.get).map (cmd => {
    1.61 +                        cmd.markup_root += cmd.markup_node(begin.get, end.get, OuterInfo(kind))
    1.62 +                        command_change(cmd)
    1.63 +                      })
    1.64 +                    else
    1.65 +                      command_change(command)
    1.66                    case _ =>
    1.67                    //}}}
    1.68                  }