more navigator positions;
authorwenzelm
Fri, 04 Apr 2025 21:48:51 +0200
changeset 82437 5b12c2677d2e
parent 82436 e48b3ddc4810
child 82438 a9d8e2474d2e
more navigator positions;
src/Tools/jEdit/src/jedit_editor.scala
--- a/src/Tools/jEdit/src/jedit_editor.scala	Fri Apr 04 20:34:13 2025 +0200
+++ b/src/Tools/jEdit/src/jedit_editor.scala	Fri Apr 04 21:48:51 2025 +0200
@@ -116,7 +116,8 @@
     view: View,
     name: String,
     line: Int = -1,
-    offset: Text.Offset = -1
+    offset: Text.Offset = -1,
+    at_target: (Buffer, Text.Offset) => Unit = (_, _) => ()
   ): Unit = {
     GUI_Thread.require {}
 
@@ -129,7 +130,9 @@
     JEdit_Lib.jedit_buffer(name) match {
       case Some(buffer) =>
         if (focus) view.goToBuffer(buffer) else view.showBuffer(buffer)
-        view.getTextArea.setCaretPosition(buffer_offset(buffer))
+        val target = buffer_offset(buffer)
+        view.getTextArea.setCaretPosition(target)
+        at_target(buffer, target)
 
       case None =>
         val is_dir =
@@ -150,6 +153,7 @@
                 view.getTextArea.setCaretPosition(target)
                 buffer.setIntegerProperty(Buffer.CARET, target)
                 buffer.setBooleanProperty(Buffer.CARET_POSITIONED, true)
+                at_target(buffer, target)
               }
               else {
                 buffer.setIntegerProperty(Buffer.CARET, target)
@@ -201,7 +205,12 @@
     offset: Text.Offset = -1
   ): Hyperlink =
     new Hyperlink {
-      def follow(view: View): Unit = goto_file(focus, view, name, line = line, offset = offset)
+      def follow(view: View): Unit = {
+        import Isabelle_Navigator.Pos
+        PIDE.plugin.navigator.record(Pos(view))
+        goto_file(focus, view, name, line = line, offset = offset,
+          at_target = (buffer, target) => Pos.make(JEdit_Lib.buffer_name(buffer), target))
+      }
       override def toString: String = "file " + quote(name)
     }