SF.net SVN: geany:[4740] branches/gnu-regex

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Mar 8 13:28:04 UTC 2010


Revision: 4740
          http://geany.svn.sourceforge.net/geany/?rev=4740&view=rev
Author:   ntrel
Date:     2010-03-08 13:28:04 +0000 (Mon, 08 Mar 2010)

Log Message:
-----------
Move search_replace_range() to search.c.

Modified Paths:
--------------
    branches/gnu-regex/ChangeLog
    branches/gnu-regex/src/document.c
    branches/gnu-regex/src/search.c
    branches/gnu-regex/src/search.h

Modified: branches/gnu-regex/ChangeLog
===================================================================
--- branches/gnu-regex/ChangeLog	2010-03-08 13:23:32 UTC (rev 4739)
+++ branches/gnu-regex/ChangeLog	2010-03-08 13:28:04 UTC (rev 4740)
@@ -4,6 +4,8 @@
    Implement POSIX-regex Find All.
  * src/document.c:
    Refactor document_replace_range() with search_replace_range().
+ * src/search.c, src/search.h, src/document.c:
+   Move search_replace_range() to search.c.
 
 
 2010-03-02  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: branches/gnu-regex/src/document.c
===================================================================
--- branches/gnu-regex/src/document.c	2010-03-08 13:23:32 UTC (rev 4739)
+++ branches/gnu-regex/src/document.c	2010-03-08 13:28:04 UTC (rev 4740)
@@ -2086,67 +2086,6 @@
 }
 
 
-/* ttf is updated to include the last match positions.
- * Note: Normally you would call sci_start/end_undo_action() around this call. */
-static guint search_replace_range(ScintillaObject *sci, struct Sci_TextToFind *ttf,
-		gint flags, const gchar *replace_text)
-{
-	gint count = 0;
-	const gchar *find_text = ttf->lpstrText;
-	gint start = ttf->chrg.cpMin;
-	gint end = ttf->chrg.cpMax;
-
-	g_return_val_if_fail(sci != NULL && find_text != NULL && replace_text != NULL, 0);
-	if (! *find_text)
-		return 0;
-
-	while (TRUE)
-	{
-		gint search_pos;
-		gint find_len = 0, replace_len = 0;
-
-		search_pos = sci_find_text(sci, flags, ttf);
-		find_len = ttf->chrgText.cpMax - ttf->chrgText.cpMin;
-		if (search_pos == -1)
-			break;	/* no more matches */
-		if (find_len == 0 && ! NZV(replace_text))
-			break;	/* nothing to do */
-
-		if (search_pos + find_len > end)
-			break;	/* found text is partly out of range */
-		else
-		{
-			gint movepastEOL = 0;
-
-			sci_set_target_start(sci, search_pos);
-			sci_set_target_end(sci, search_pos + find_len);
-
-			if (find_len <= 0)
-			{
-				gchar chNext = sci_get_char_at(sci, sci_get_target_end(sci));
-
-				if (chNext == '\r' || chNext == '\n')
-					movepastEOL = 1;
-			}
-			replace_len = sci_replace_target(sci, replace_text,
-				flags & SCFIND_REGEXP);
-			count++;
-			if (search_pos == end)
-				break;	/* Prevent hang when replacing regex $ */
-
-			/* make the next search start after the replaced text */
-			start = search_pos + replace_len + movepastEOL;
-			if (find_len == 0)
-				start = sci_get_position_after(sci, start);	/* prevent '[ ]*' regex rematching part of replaced text */
-			ttf->chrg.cpMin = start;
-			end += replace_len - find_len;	/* update end of range now text has changed */
-			ttf->chrg.cpMax = end;
-		}
-	}
-	return count;
-}
-
-
 /* Replace all text matches in a certain range within document.
  * If not NULL, *new_range_end is set to the new range endpoint after replacing,
  * or -1 if no text was found.

Modified: branches/gnu-regex/src/search.c
===================================================================
--- branches/gnu-regex/src/search.c	2010-03-08 13:23:32 UTC (rev 4739)
+++ branches/gnu-regex/src/search.c	2010-03-08 13:28:04 UTC (rev 4740)
@@ -1876,3 +1876,64 @@
 }
 
 
+/* ttf is updated to include the last match positions.
+ * Note: Normally you would call sci_start/end_undo_action() around this call. */
+guint search_replace_range(ScintillaObject *sci, struct Sci_TextToFind *ttf,
+		gint flags, const gchar *replace_text)
+{
+	gint count = 0;
+	const gchar *find_text = ttf->lpstrText;
+	gint start = ttf->chrg.cpMin;
+	gint end = ttf->chrg.cpMax;
+
+	g_return_val_if_fail(sci != NULL && find_text != NULL && replace_text != NULL, 0);
+	if (! *find_text)
+		return 0;
+
+	while (TRUE)
+	{
+		gint search_pos;
+		gint find_len = 0, replace_len = 0;
+
+		search_pos = sci_find_text(sci, flags, ttf);
+		find_len = ttf->chrgText.cpMax - ttf->chrgText.cpMin;
+		if (search_pos == -1)
+			break;	/* no more matches */
+		if (find_len == 0 && ! NZV(replace_text))
+			break;	/* nothing to do */
+
+		if (search_pos + find_len > end)
+			break;	/* found text is partly out of range */
+		else
+		{
+			gint movepastEOL = 0;
+
+			sci_set_target_start(sci, search_pos);
+			sci_set_target_end(sci, search_pos + find_len);
+
+			if (find_len <= 0)
+			{
+				gchar chNext = sci_get_char_at(sci, sci_get_target_end(sci));
+
+				if (chNext == '\r' || chNext == '\n')
+					movepastEOL = 1;
+			}
+			replace_len = sci_replace_target(sci, replace_text,
+				flags & SCFIND_REGEXP);
+			count++;
+			if (search_pos == end)
+				break;	/* Prevent hang when replacing regex $ */
+
+			/* make the next search start after the replaced text */
+			start = search_pos + replace_len + movepastEOL;
+			if (find_len == 0)
+				start = sci_get_position_after(sci, start);	/* prevent '[ ]*' regex rematching part of replaced text */
+			ttf->chrg.cpMin = start;
+			end += replace_len - find_len;	/* update end of range now text has changed */
+			ttf->chrg.cpMax = end;
+		}
+	}
+	return count;
+}
+
+

Modified: branches/gnu-regex/src/search.h
===================================================================
--- branches/gnu-regex/src/search.h	2010-03-08 13:23:32 UTC (rev 4739)
+++ branches/gnu-regex/src/search.h	2010-03-08 13:28:04 UTC (rev 4740)
@@ -80,4 +80,9 @@
 gint search_replace_target(struct _ScintillaObject *sci, const gchar *replace_text,
 	gboolean regex);
 
+struct Sci_TextToFind;
+
+guint search_replace_range(struct _ScintillaObject *sci, struct Sci_TextToFind *ttf,
+		gint flags, const gchar *replace_text);
+
 #endif


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list