13 |
13 |
14 import scala.collection.mutable |
14 import scala.collection.mutable |
15 |
15 |
16 import org.gjt.sp.jedit.jEdit |
16 import org.gjt.sp.jedit.jEdit |
17 import org.gjt.sp.jedit.Buffer |
17 import org.gjt.sp.jedit.Buffer |
18 import org.gjt.sp.jedit.buffer.{BufferAdapter, BufferListener, JEditBuffer} |
18 import org.gjt.sp.jedit.buffer.{BufferAdapter, BufferListener, JEditBuffer, LineManager} |
19 |
19 |
20 |
20 |
21 object Document_Model |
21 object Document_Model |
22 { |
22 { |
23 /* document model of buffer */ |
23 /* document model of buffer */ |
282 pending_edits.edit(false, Text.Edit.remove(offset, buffer.getText(offset, removed_length))) |
282 pending_edits.edit(false, Text.Edit.remove(offset, buffer.getText(offset, removed_length))) |
283 } |
283 } |
284 } |
284 } |
285 |
285 |
286 |
286 |
287 /* activation */ |
287 /* syntax */ |
288 |
288 |
289 private def refresh_token_marker() |
289 def syntax_changed() |
|
290 { |
|
291 Untyped.get(buffer, "lineMgr").asInstanceOf[LineManager].setFirstInvalidLineContext(0) |
|
292 for (text_area <- JEdit_Lib.jedit_text_areas(buffer)) { |
|
293 val c = Class.forName("org.gjt.sp.jedit.textarea.TextArea") |
|
294 val m = c.getDeclaredMethod("foldStructureChanged") |
|
295 m.setAccessible(true) |
|
296 m.invoke(text_area) |
|
297 } |
|
298 } |
|
299 |
|
300 private def init_token_marker() |
290 { |
301 { |
291 Isabelle.buffer_token_marker(buffer) match { |
302 Isabelle.buffer_token_marker(buffer) match { |
292 case Some(marker) if marker != buffer.getTokenMarker => |
303 case Some(marker) if marker != buffer.getTokenMarker => |
293 buffer.setTokenMarker(jEdit.getMode("text").getTokenMarker) |
|
294 buffer.setTokenMarker(marker) |
304 buffer.setTokenMarker(marker) |
|
305 syntax_changed() |
295 case _ => |
306 case _ => |
296 } |
307 } |
297 } |
308 } |
|
309 |
|
310 |
|
311 /* activation */ |
298 |
312 |
299 private def activate() |
313 private def activate() |
300 { |
314 { |
301 pending_edits.edit(true, Text.Edit.insert(0, JEdit_Lib.buffer_text(buffer))) |
315 pending_edits.edit(true, Text.Edit.insert(0, JEdit_Lib.buffer_text(buffer))) |
302 buffer.addBufferListener(buffer_listener) |
316 buffer.addBufferListener(buffer_listener) |
303 refresh_token_marker() |
317 init_token_marker() |
304 } |
318 } |
305 |
319 |
306 private def deactivate() |
320 private def deactivate() |
307 { |
321 { |
308 buffer.removeBufferListener(buffer_listener) |
322 buffer.removeBufferListener(buffer_listener) |
309 refresh_token_marker() |
323 init_token_marker() |
310 } |
324 } |
311 } |
325 } |