# HG changeset patch # User wenzelm # Date 1373138378 -7200 # Node ID 7658f8d7b2dc13092ccef90874fb8734c47d568c # Parent 64206b5b243cb15e70cc6fbbeced62882b58b052 minimal jedit mode for Isabelle NEWS; diff -r 64206b5b243c -r 7658f8d7b2dc NEWS --- a/NEWS Fri Jul 05 23:17:39 2013 +0200 +++ b/NEWS Sat Jul 06 21:19:38 2013 +0200 @@ -10536,4 +10536,4 @@ * 'subtype' facility in HOL for introducing new types as subsets of existing types; -:mode=text:wrap=hard:maxLineLen=72: +:mode=isabelle-news:wrap=hard:maxLineLen=72: diff -r 64206b5b243c -r 7658f8d7b2dc src/Tools/jEdit/lib/Tools/jedit --- a/src/Tools/jEdit/lib/Tools/jedit Fri Jul 05 23:17:39 2013 +0200 +++ b/src/Tools/jEdit/lib/Tools/jedit Sat Jul 06 21:19:38 2013 +0200 @@ -284,6 +284,7 @@ perl -i -e 'while (<>) { if (m/NAME="javacc"/) { print qq,\n\n,; + print qq,\n\n,; print qq,\n\n,; print qq,\n\n,; } print; }' dist/modes/catalog diff -r 64206b5b243c -r 7658f8d7b2dc src/Tools/jEdit/src/Isabelle.props --- a/src/Tools/jEdit/src/Isabelle.props Fri Jul 05 23:17:39 2013 +0200 +++ b/src/Tools/jEdit/src/Isabelle.props Sat Jul 06 21:19:38 2013 +0200 @@ -66,6 +66,8 @@ isabelle-timing.title=Timing #SideKick +mode.isabelle-news.folding=none +mode.isabelle-news.sidekick.parser=isabelle-news mode.isabelle-options.folding=sidekick mode.isabelle-options.sidekick.parser=isabelle-options mode.isabelle-root.folding=sidekick diff -r 64206b5b243c -r 7658f8d7b2dc src/Tools/jEdit/src/isabelle_sidekick.scala --- a/src/Tools/jEdit/src/isabelle_sidekick.scala Fri Jul 05 23:17:39 2013 +0200 +++ b/src/Tools/jEdit/src/isabelle_sidekick.scala Sat Jul 06 21:19:38 2013 +0200 @@ -12,6 +12,7 @@ import scala.collection.Set import scala.collection.immutable.TreeSet +import scala.util.matching.Regex import java.awt.Component import javax.swing.tree.DefaultMutableTreeNode @@ -229,3 +230,34 @@ } } + +class Isabelle_Sidekick_News extends Isabelle_Sidekick("isabelle-news", Some(Outer_Syntax.empty)) +{ + private val Heading1 = new Regex("""^New in (.*)\w*$""") + private val Heading2 = new Regex("""^\*\*\*\w*(.*)\w*\*\*\*\w*$""") + + private def make_node(s: String, start: Text.Offset, stop: Text.Offset): DefaultMutableTreeNode = + new DefaultMutableTreeNode(new Isabelle_Sidekick.Asset(s, start, stop)) + + override def parser(buffer: Buffer, syntax: Outer_Syntax, data: SideKickParsedData): Boolean = + { + var offset = 0 + + for (line <- split_lines(JEdit_Lib.buffer_text(buffer)) if !stopped) { + line match { + case Heading1(s) => + data.root.add(make_node(Library.capitalize(s), offset, offset + line.length)) + case Heading2(s) => + data.root.getLastChild.asInstanceOf[DefaultMutableTreeNode] + .add(make_node(s, offset, offset + line.length)) + case _ => + } + offset += line.length + 1 + } + + true + } + + override def supportsCompletion = false +} + diff -r 64206b5b243c -r 7658f8d7b2dc src/Tools/jEdit/src/modes/isabelle-news.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Tools/jEdit/src/modes/isabelle-news.xml Sat Jul 06 21:19:38 2013 +0200 @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff -r 64206b5b243c -r 7658f8d7b2dc src/Tools/jEdit/src/services.xml --- a/src/Tools/jEdit/src/services.xml Fri Jul 05 23:17:39 2013 +0200 +++ b/src/Tools/jEdit/src/services.xml Sat Jul 06 21:19:38 2013 +0200 @@ -8,6 +8,9 @@ new isabelle.jedit.Isabelle_Sidekick_Default(); + + new isabelle.jedit.Isabelle_Sidekick_News(); + new isabelle.jedit.Isabelle_Sidekick_Options();