lib/jedit/plugin/isabelle_parser.scala
author wenzelm
Thu, 23 Jul 2009 18:44:08 +0200
changeset 32148 253f6808dabe
parent 28048 05d9a05f9d15
permissions -rw-r--r--
renamed simpset_of to global_simpset_of, and local_simpset_of to simpset_of -- same for claset and clasimpset;
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
28048
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    14
import org.gjt.sp.jedit.{Buffer, EditPane}
27987
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 errorlist.DefaultErrorSource
28048
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    18
import sidekick.{Asset, SideKickParser, SideKickParsedData, SideKickCompletion}
27987
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    19
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    20
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    21
private class IsabelleAsset(name: String, content: String) extends Asset(name)
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    22
{
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    23
  override def getShortString() = { name }
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    24
  override def getLongString() = { content }
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    25
  override def getIcon() = { null }
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    26
}
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    27
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    28
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    29
class IsabelleParser extends SideKickParser("isabelle") {
28048
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    30
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    31
  /* parsing */
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    32
27987
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    33
  private var stopped = false
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    34
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    35
  override def stop () { stopped = true }
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    36
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    37
  def parse(buffer: Buffer, e: DefaultErrorSource): SideKickParsedData = {
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    38
    stopped = false
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    39
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    40
    var text: String = null
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    41
    var data: SideKickParsedData = null
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    42
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    43
    try {
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    44
      buffer.readLock()
27988
efc6d38d16d2 misc tuning of names;
wenzelm
parents: 27987
diff changeset
    45
      text = buffer.getText(0, buffer.getLength)
efc6d38d16d2 misc tuning of names;
wenzelm
parents: 27987
diff changeset
    46
      data = new SideKickParsedData(buffer.getName)
27987
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    47
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    48
      val asset = new IsabelleAsset("theory", null)
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    49
      asset.setStart(buffer.createPosition(0))
27988
efc6d38d16d2 misc tuning of names;
wenzelm
parents: 27987
diff changeset
    50
      asset.setEnd(buffer.createPosition(buffer.getLength))
27987
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    51
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    52
      val node = new DefaultMutableTreeNode(asset)
27988
efc6d38d16d2 misc tuning of names;
wenzelm
parents: 27987
diff changeset
    53
      data.root.insert(node, node.getChildCount)
27987
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    54
27988
efc6d38d16d2 misc tuning of names;
wenzelm
parents: 27987
diff changeset
    55
    }
efc6d38d16d2 misc tuning of names;
wenzelm
parents: 27987
diff changeset
    56
    finally {
27987
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    57
      buffer.readUnlock()
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    58
    }
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    59
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    60
    data
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    61
  }
28048
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    62
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    63
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    64
  /* completion */
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    65
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    66
  override def supportsCompletion = true
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    67
  override def canCompleteAnywhere = true
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    68
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    69
  override def complete(pane: EditPane, caret: Int): SideKickCompletion = null
05d9a05f9d15 dummy setup for completion;
wenzelm
parents: 27988
diff changeset
    70
27987
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    71
}
c3f7fa72af2a rearranged source files;
wenzelm
parents:
diff changeset
    72