clarified signature;
authorwenzelm
Tue, 25 Mar 2025 22:23:27 +0100
changeset 82406 c597898ff51b
parent 82405 f3fbe96bd718
child 82407 fcc0f74ac086
clarified signature;
src/Tools/jEdit/src/document_model.scala
src/Tools/jEdit/src/jedit_lib.scala
--- a/src/Tools/jEdit/src/document_model.scala	Tue Mar 25 21:24:39 2025 +0100
+++ b/src/Tools/jEdit/src/document_model.scala	Tue Mar 25 22:23:27 2025 +0100
@@ -18,7 +18,7 @@
 
 import org.gjt.sp.jedit.View
 import org.gjt.sp.jedit.Buffer
-import org.gjt.sp.jedit.buffer.{BufferAdapter, BufferListener, JEditBuffer}
+import org.gjt.sp.jedit.buffer.{BufferListener, JEditBuffer}
 
 
 object Document_Model {
@@ -568,6 +568,8 @@
       PIDE.editor.invoke()
     }
 
+    val listener: BufferListener = JEdit_Lib.buffer_listener((_, e) => edit(List(e)))
+
 
     // blob
 
@@ -621,31 +623,6 @@
   def untyped_data: AnyRef = buffer_state.untyped_data
 
 
-  /* buffer listener */
-
-  private val buffer_listener: BufferListener = new BufferAdapter {
-    override def contentInserted(
-      buffer: JEditBuffer,
-      start_line: Int,
-      offset: Int,
-      num_lines: Int,
-      length: Int
-    ): Unit = {
-      buffer_state.edit(List(Text.Edit.insert(offset, buffer.getText(offset, length))))
-    }
-
-    override def preContentRemoved(
-      buffer: JEditBuffer,
-      start_line: Int,
-      offset: Int,
-      num_lines: Int,
-      removed_length: Int
-    ): Unit = {
-      buffer_state.edit(List(Text.Edit.remove(offset, buffer.getText(offset, removed_length))))
-    }
-  }
-
-
   /* syntax */
 
   def syntax_changed(): Unit = {
@@ -681,7 +658,7 @@
             Text.Edit.replace(0, file_model.content.text, JEdit_Lib.buffer_text(buffer)))
     }
 
-    buffer.addBufferListener(buffer_listener)
+    buffer.addBufferListener(buffer_state.listener)
     init_token_marker()
 
     this
@@ -691,7 +668,7 @@
   /* exit */
 
   def exit(): File_Model = GUI_Thread.require {
-    buffer.removeBufferListener(buffer_listener)
+    buffer.removeBufferListener(buffer_state.listener)
     init_token_marker()
 
     File_Model.init(session,
--- a/src/Tools/jEdit/src/jedit_lib.scala	Tue Mar 25 21:24:39 2025 +0100
+++ b/src/Tools/jEdit/src/jedit_lib.scala	Tue Mar 25 22:23:27 2025 +0100
@@ -23,7 +23,7 @@
 import org.gjt.sp.jedit.{jEdit, Buffer, View, GUIUtilities, Debug, EditPane}
 import org.gjt.sp.jedit.io.{FileVFS, VFSManager}
 import org.gjt.sp.jedit.gui.{KeyEventWorkaround, KeyEventTranslator}
-import org.gjt.sp.jedit.buffer.{JEditBuffer, LineManager}
+import org.gjt.sp.jedit.buffer.{BufferListener, BufferAdapter, JEditBuffer, LineManager}
 import org.gjt.sp.jedit.textarea.{JEditTextArea, TextArea, TextAreaPainter, Selection, AntiAlias}
 
 
@@ -403,6 +403,17 @@
     }
 
 
+  /* buffer event handling */
+
+  def buffer_listener(handle: (Buffer, Text.Edit) => Unit): BufferListener =
+    new BufferAdapter {
+      override def contentInserted(buf: JEditBuffer, line: Int, i: Int, lines: Int, n: Int): Unit =
+        handle(buf.asInstanceOf[Buffer], Text.Edit.insert(i, buf.getText(i, n)))
+      override def preContentRemoved(buf: JEditBuffer, line: Int, i: Int, lines: Int, n: Int): Unit =
+        handle(buf.asInstanceOf[Buffer], Text.Edit.remove(i, buf.getText(i, n)))
+    }
+
+
   /* key event handling */
 
   def request_focus_view(alt_view: View = null): Unit = {