tuned signature: more operations;
authorwenzelm
Sat, 16 Nov 2024 19:07:24 +0100
changeset 81461 b82ee80baa05
parent 81460 6ea0055fa42d
child 81462 dc35aa7d5311
tuned signature: more operations;
src/Tools/jEdit/src/jedit_lib.scala
src/Tools/jEdit/src/rich_text_area.scala
--- a/src/Tools/jEdit/src/jedit_lib.scala	Sat Nov 16 15:04:41 2024 +0100
+++ b/src/Tools/jEdit/src/jedit_lib.scala	Sat Nov 16 19:07:24 2024 +0100
@@ -16,6 +16,7 @@
 import javax.swing.{Icon, ImageIcon, JScrollBar, JWindow, SwingUtilities}
 
 import scala.util.parsing.input.CharSequenceReader
+import scala.util.matching.Regex
 import scala.jdk.CollectionConverters._
 import scala.annotation.tailrec
 
@@ -143,6 +144,13 @@
     try { Some(buffer.getText(range.start, range.length)) }
     catch { case _: ArrayIndexOutOfBoundsException => None }
 
+  def search_text(buffer: JEditBuffer, range: Text.Range, regex: Regex): List[Text.Range] =
+    List.from(
+      for {
+        s <- get_text(buffer, range).iterator
+        m <- regex.findAllMatchIn(s)
+      } yield Text.Range(range.start + m.start, range.start + m.end))
+
   def set_text(buffer: JEditBuffer, text: List[String]): Int = {
     val old = buffer.isUndoInProgress
     def set(b: Boolean): Unit = Untyped.set[Boolean](buffer, "undoInProgress", b)
--- a/src/Tools/jEdit/src/rich_text_area.scala	Sat Nov 16 15:04:41 2024 +0100
+++ b/src/Tools/jEdit/src/rich_text_area.scala	Sat Nov 16 19:07:24 2024 +0100
@@ -626,9 +626,7 @@
             // search pattern
             for {
               regex <- search_pattern
-              text <- JEdit_Lib.get_text(buffer, line_range)
-              m <- regex.findAllMatchIn(text)
-              range = Text.Range(m.start, m.end) + line_range.start
+              range <- JEdit_Lib.search_text(buffer, line_range, regex)
               r <- JEdit_Lib.gfx_range(text_area, range)
             } {
               gfx.setColor(rendering.search_color)