|
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 |