lib/jedit/plugin/isabelle_parser.scala
changeset 27987 c3f7fa72af2a
child 27988 efc6d38d16d2
equal deleted inserted replaced
27986:26e1a7a6695d 27987:c3f7fa72af2a
       
     1 /*  Title:      lib/jedit/plugin/isabelle_parser.scala
       
     2     ID:         $Id$
       
     3     Author:     Makarius
       
     4 
       
     5 Isabelle parser setup for Sidekick plugin.
       
     6 */
       
     7 
       
     8 package isabelle.jedit
       
     9 
       
    10 import javax.swing.text.Position
       
    11 import javax.swing.tree.DefaultMutableTreeNode
       
    12 import javax.swing.tree.DefaultTreeModel
       
    13 
       
    14 import org.gjt.sp.jedit.Buffer
       
    15 import org.gjt.sp.util.Log
       
    16 
       
    17 import sidekick.Asset
       
    18 import sidekick.SideKickParsedData
       
    19 import sidekick.SideKickParser
       
    20 import errorlist.DefaultErrorSource
       
    21 
       
    22 
       
    23 private class IsabelleAsset(name: String, content: String) extends Asset(name)
       
    24 {
       
    25   override def getShortString() = { name }
       
    26   override def getLongString() = { content }
       
    27   override def getIcon() = { null }
       
    28 }
       
    29 
       
    30 
       
    31 class IsabelleParser extends SideKickParser("isabelle") {
       
    32   private var stopped = false
       
    33 
       
    34   override def stop () { stopped = true }
       
    35 
       
    36   def parse(buffer: Buffer, e: DefaultErrorSource): SideKickParsedData = {
       
    37     stopped = false
       
    38 
       
    39     var text: String = null
       
    40     var data: SideKickParsedData = null
       
    41 
       
    42     try {
       
    43       buffer.readLock()
       
    44       text = buffer.getText(0, buffer.getLength())
       
    45       data = new SideKickParsedData(buffer.getName())
       
    46 
       
    47       val asset = new IsabelleAsset("theory", null)
       
    48       asset.setStart(buffer.createPosition(0))
       
    49       asset.setEnd(buffer.createPosition(buffer.getLength()))
       
    50 
       
    51       val node = new DefaultMutableTreeNode(asset)
       
    52       data.root.insert(node, node.getChildCount())
       
    53 
       
    54     } finally {
       
    55       buffer.readUnlock()
       
    56     }
       
    57 
       
    58     data
       
    59   }
       
    60 }
       
    61