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