src/Tools/jEdit/src/isabelle_sidekick.scala
changeset 51618 a3577cd80c41
parent 51493 59d8a1031c00
child 52539 7658f8d7b2dc
equal deleted inserted replaced
51617:4e49bba9772d 51618:a3577cd80c41
    41     override def getStart: Position = _start
    41     override def getStart: Position = _start
    42     override def setStart(start: Position) = _start = start
    42     override def setStart(start: Position) = _start = start
    43     override def getEnd: Position = _end
    43     override def getEnd: Position = _end
    44     override def setEnd(end: Position) = _end = end
    44     override def setEnd(end: Position) = _end = end
    45     override def toString = _name
    45     override def toString = _name
       
    46   }
       
    47 
       
    48   def swing_markup_tree(tree: Markup_Tree, parent: DefaultMutableTreeNode,
       
    49     swing_node: Text.Info[List[XML.Elem]] => DefaultMutableTreeNode)
       
    50   {
       
    51     for ((_, entry) <- tree.branches) {
       
    52       val node = swing_node(Text.Info(entry.range, entry.markup))
       
    53       swing_markup_tree(entry.subtree, node, swing_node)
       
    54       parent.add(node)
       
    55     }
    46   }
    56   }
    47 }
    57 }
    48 
    58 
    49 
    59 
    50 class Isabelle_Sidekick(name: String, get_syntax: => Option[Outer_Syntax])
    60 class Isabelle_Sidekick(name: String, get_syntax: => Option[Outer_Syntax])
   193   {
   203   {
   194     Swing_Thread.now { Document_Model(buffer).map(_.snapshot) } match {
   204     Swing_Thread.now { Document_Model(buffer).map(_.snapshot) } match {
   195       case Some(snapshot) =>
   205       case Some(snapshot) =>
   196         val root = data.root
   206         val root = data.root
   197         for ((command, command_start) <- snapshot.node.command_range() if !stopped) {
   207         for ((command, command_start) <- snapshot.node.command_range() if !stopped) {
   198           snapshot.state.command_state(snapshot.version, command).markup
   208           Isabelle_Sidekick.swing_markup_tree(
   199             .swing_tree(root, (info: Text.Info[List[XML.Elem]]) =>
   209             snapshot.state.command_state(snapshot.version, command).markup, root,
       
   210               (info: Text.Info[List[XML.Elem]]) =>
   200               {
   211               {
   201                 val range = info.range + command_start
   212                 val range = info.range + command_start
   202                 val content = command.source(info.range).replace('\n', ' ')
   213                 val content = command.source(info.range).replace('\n', ' ')
   203                 val info_text =
   214                 val info_text =
   204                   Pretty.formatted(Library.separate(Pretty.FBreak, info.info), margin = 40.0)
   215                   Pretty.formatted(Library.separate(Pretty.FBreak, info.info), margin = 40.0)