--- a/src/Tools/jEdit/src/document_model.scala Tue Dec 02 14:16:56 2014 +0100
+++ b/src/Tools/jEdit/src/document_model.scala Tue Dec 02 16:10:11 2014 +0100
@@ -15,7 +15,7 @@
import org.gjt.sp.jedit.jEdit
import org.gjt.sp.jedit.Buffer
-import org.gjt.sp.jedit.buffer.{BufferAdapter, BufferListener, JEditBuffer}
+import org.gjt.sp.jedit.buffer.{BufferAdapter, BufferListener, JEditBuffer, LineManager}
object Document_Model
@@ -284,28 +284,42 @@
}
- /* activation */
+ /* syntax */
- private def refresh_token_marker()
+ def syntax_changed()
+ {
+ Untyped.get(buffer, "lineMgr").asInstanceOf[LineManager].setFirstInvalidLineContext(0)
+ for (text_area <- JEdit_Lib.jedit_text_areas(buffer)) {
+ val c = Class.forName("org.gjt.sp.jedit.textarea.TextArea")
+ val m = c.getDeclaredMethod("foldStructureChanged")
+ m.setAccessible(true)
+ m.invoke(text_area)
+ }
+ }
+
+ private def init_token_marker()
{
Isabelle.buffer_token_marker(buffer) match {
case Some(marker) if marker != buffer.getTokenMarker =>
- buffer.setTokenMarker(jEdit.getMode("text").getTokenMarker)
buffer.setTokenMarker(marker)
+ syntax_changed()
case _ =>
}
}
+
+ /* activation */
+
private def activate()
{
pending_edits.edit(true, Text.Edit.insert(0, JEdit_Lib.buffer_text(buffer)))
buffer.addBufferListener(buffer_listener)
- refresh_token_marker()
+ init_token_marker()
}
private def deactivate()
{
buffer.removeBufferListener(buffer_listener)
- refresh_token_marker()
+ init_token_marker()
}
}
--- a/src/Tools/jEdit/src/jedit_resources.scala Tue Dec 02 14:16:56 2014 +0100
+++ b/src/Tools/jEdit/src/jedit_resources.scala Tue Dec 02 16:10:11 2014 +0100
@@ -114,7 +114,15 @@
override def commit(change: Session.Change)
{
- if (!change.syntax_changed.isEmpty) GUI_Thread.later { jEdit.propertiesChanged() }
+ if (!change.syntax_changed.isEmpty)
+ GUI_Thread.later {
+ val changed = change.syntax_changed.toSet
+ for {
+ buffer <- JEdit_Lib.jedit_buffers()
+ model <- PIDE.document_model(buffer)
+ if changed(model.node_name)
+ } model.syntax_changed()
+ }
if (change.deps_changed && PIDE.options.bool("jedit_auto_load")) PIDE.deps_changed()
}
}