lib/jedit/plugin/isabelle_parser.scala
author wenzelm
Sun, 24 Aug 2008 19:24:27 +0200
changeset 27988 efc6d38d16d2
parent 27987 c3f7fa72af2a
child 28048 05d9a05f9d15
permissions -rw-r--r--
misc tuning of names;

/*  Title:      lib/jedit/plugin/isabelle_parser.scala
    ID:         $Id$
    Author:     Makarius

Isabelle parser setup for Sidekick plugin.
*/

package isabelle.jedit

import javax.swing.text.Position
import javax.swing.tree.DefaultMutableTreeNode
import javax.swing.tree.DefaultTreeModel

import org.gjt.sp.jedit.Buffer
import org.gjt.sp.util.Log

import sidekick.Asset
import sidekick.SideKickParsedData
import sidekick.SideKickParser
import errorlist.DefaultErrorSource


private class IsabelleAsset(name: String, content: String) extends Asset(name)
{
  override def getShortString() = { name }
  override def getLongString() = { content }
  override def getIcon() = { null }
}


class IsabelleParser extends SideKickParser("isabelle") {
  private var stopped = false

  override def stop () { stopped = true }

  def parse(buffer: Buffer, e: DefaultErrorSource): SideKickParsedData = {
    stopped = false

    var text: String = null
    var data: SideKickParsedData = null

    try {
      buffer.readLock()
      text = buffer.getText(0, buffer.getLength)
      data = new SideKickParsedData(buffer.getName)

      val asset = new IsabelleAsset("theory", null)
      asset.setStart(buffer.createPosition(0))
      asset.setEnd(buffer.createPosition(buffer.getLength))

      val node = new DefaultMutableTreeNode(asset)
      data.root.insert(node, node.getChildCount)

    }
    finally {
      buffer.readUnlock()
    }

    data
  }
}