src/Pure/PIDE/document.scala
changeset 56354 a6f8c3566560
parent 56337 520148f9921d
child 56372 fadb0fef09d7
equal deleted inserted replaced
56353:ecbdfe30bf7f 56354:a6f8c3566560
   432 
   432 
   433     def cumulate[A](
   433     def cumulate[A](
   434       range: Text.Range,
   434       range: Text.Range,
   435       info: A,
   435       info: A,
   436       elements: Elements,
   436       elements: Elements,
   437       result: Command.Results => (A, Text.Markup) => Option[A],
   437       result: List[Command.State] => (A, Text.Markup) => Option[A],
   438       status: Boolean = false): List[Text.Info[A]]
   438       status: Boolean = false): List[Text.Info[A]]
   439 
   439 
   440     def select[A](
   440     def select[A](
   441       range: Text.Range,
   441       range: Text.Range,
   442       elements: Elements,
   442       elements: Elements,
   443       result: Command.Results => Text.Markup => Option[A],
   443       result: List[Command.State] => Text.Markup => Option[A],
   444       status: Boolean = false): List[Text.Info[A]]
   444       status: Boolean = false): List[Text.Info[A]]
   445   }
   445   }
   446 
   446 
   447 
   447 
   448 
   448 
   727 
   727 
   728         def cumulate[A](
   728         def cumulate[A](
   729           range: Text.Range,
   729           range: Text.Range,
   730           info: A,
   730           info: A,
   731           elements: Elements,
   731           elements: Elements,
   732           result: Command.Results => (A, Text.Markup) => Option[A],
   732           result: List[Command.State] => (A, Text.Markup) => Option[A],
   733           status: Boolean = false): List[Text.Info[A]] =
   733           status: Boolean = false): List[Text.Info[A]] =
   734         {
   734         {
   735           val former_range = revert(range)
   735           val former_range = revert(range)
   736           val (file_name, command_range_iterator) =
   736           val (file_name, command_range_iterator) =
   737             load_commands match {
   737             load_commands match {
   741           val markup_index = Command.Markup_Index(status, file_name)
   741           val markup_index = Command.Markup_Index(status, file_name)
   742           (for {
   742           (for {
   743             (command, command_start) <- command_range_iterator
   743             (command, command_start) <- command_range_iterator
   744             chunk <- command.chunks.get(file_name).iterator
   744             chunk <- command.chunks.get(file_name).iterator
   745             states = state.command_states(version, command)
   745             states = state.command_states(version, command)
   746             res = result(Command.State.merge_results(states))
   746             res = result(states)
   747             range = (former_range - command_start).restrict(chunk.range)
   747             range = (former_range - command_start).restrict(chunk.range)
   748             markup = Command.State.merge_markup(states, markup_index, range, elements)
   748             markup = Command.State.merge_markup(states, markup_index, range, elements)
   749             Text.Info(r0, a) <- markup.cumulate[A](range, info, elements,
   749             Text.Info(r0, a) <- markup.cumulate[A](range, info, elements,
   750               {
   750               {
   751                 case (a, Text.Info(r0, b)) => res(a, Text.Info(convert(r0 + command_start), b))
   751                 case (a, Text.Info(r0, b)) => res(a, Text.Info(convert(r0 + command_start), b))
   754         }
   754         }
   755 
   755 
   756         def select[A](
   756         def select[A](
   757           range: Text.Range,
   757           range: Text.Range,
   758           elements: Elements,
   758           elements: Elements,
   759           result: Command.Results => Text.Markup => Option[A],
   759           result: List[Command.State] => Text.Markup => Option[A],
   760           status: Boolean = false): List[Text.Info[A]] =
   760           status: Boolean = false): List[Text.Info[A]] =
   761         {
   761         {
   762           def result1(results: Command.Results): (Option[A], Text.Markup) => Option[Option[A]] =
   762           def result1(states: List[Command.State]): (Option[A], Text.Markup) => Option[Option[A]] =
   763           {
   763           {
   764             val res = result(results)
   764             val res = result(states)
   765             (_: Option[A], x: Text.Markup) =>
   765             (_: Option[A], x: Text.Markup) =>
   766               res(x) match {
   766               res(x) match {
   767                 case None => None
   767                 case None => None
   768                 case some => Some(some)
   768                 case some => Some(some)
   769               }
   769               }