src/Tools/jEdit/src/jedit_editor.scala
changeset 56373 0605d90be6fc
parent 56314 9a513737a0b2
child 56413 2d4d9a5f68ff
equal deleted inserted replaced
56372:fadb0fef09d7 56373:0605d90be6fc
    72     PIDE.document_view(text_area) match {
    72     PIDE.document_view(text_area) match {
    73       case Some(doc_view) if doc_view.model.is_theory =>
    73       case Some(doc_view) if doc_view.model.is_theory =>
    74         val node = snapshot.version.nodes(doc_view.model.node_name)
    74         val node = snapshot.version.nodes(doc_view.model.node_name)
    75         val caret = snapshot.revert(text_area.getCaretPosition)
    75         val caret = snapshot.revert(text_area.getCaretPosition)
    76         if (caret < buffer.getLength) {
    76         if (caret < buffer.getLength) {
    77           val caret_commands = node.command_range(caret)
    77           val caret_command_iterator = node.command_iterator(caret)
    78           if (caret_commands.hasNext) {
    78           if (caret_command_iterator.hasNext) {
    79             val (cmd0, _) = caret_commands.next
    79             val (cmd0, _) = caret_command_iterator.next
    80             node.commands.reverse.iterator(cmd0).find(cmd => !cmd.is_ignored)
    80             node.commands.reverse.iterator(cmd0).find(cmd => !cmd.is_ignored)
    81           }
    81           }
    82           else None
    82           else None
    83         }
    83         }
    84         else node.commands.reverse.iterator.find(cmd => !cmd.is_ignored)
    84         else node.commands.reverse.iterator.find(cmd => !cmd.is_ignored)
   152     else {
   152     else {
   153       snapshot.state.find_command(snapshot.version, command.id) match {
   153       snapshot.state.find_command(snapshot.version, command.id) match {
   154         case None => None
   154         case None => None
   155         case Some((node, _)) =>
   155         case Some((node, _)) =>
   156           val file_name = command.node_name.node
   156           val file_name = command.node_name.node
   157           val sources =
   157           val sources_iterator =
   158             node.commands.iterator.takeWhile(_ != command).map(_.source) ++
   158             node.commands.iterator.takeWhile(_ != command).map(_.source) ++
   159               (if (offset == 0) Iterator.empty
   159               (if (offset == 0) Iterator.empty
   160                else Iterator.single(command.source(Text.Range(0, command.decode(offset)))))
   160                else Iterator.single(command.source(Text.Range(0, command.decode(offset)))))
   161           val (line, column) = ((1, 1) /: sources)(Symbol.advance_line_column)
   161           val (line, column) = ((1, 1) /: sources_iterator)(Symbol.advance_line_column)
   162           Some(new Hyperlink { def follow(view: View) { goto_file(view, file_name, line, column) } })
   162           Some(new Hyperlink { def follow(view: View) { goto_file(view, file_name, line, column) } })
   163       }
   163       }
   164     }
   164     }
   165   }
   165   }
   166 
   166