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

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Mar 8 12:27:34 UTC 2010


Revision: 4738
          http://geany.svn.sourceforge.net/geany/?rev=4738&view=rev
Author:   ntrel
Date:     2010-03-08 12:27:31 +0000 (Mon, 08 Mar 2010)

Log Message:
-----------
Implement POSIX-regex Find All.

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

Modified: branches/gnu-regex/ChangeLog
===================================================================
--- branches/gnu-regex/ChangeLog	2010-03-07 19:33:15 UTC (rev 4737)
+++ branches/gnu-regex/ChangeLog	2010-03-08 12:27:31 UTC (rev 4738)
@@ -1,3 +1,9 @@
+2010-03-08  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/search.c:
+   Implement POSIX-regex Find All.
+
+
 2010-03-02  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
 
  * src/search.c, src/search.h, src/document.c:

Modified: branches/gnu-regex/src/search.c
===================================================================
--- branches/gnu-regex/src/search.c	2010-03-07 19:33:15 UTC (rev 4737)
+++ branches/gnu-regex/src/search.c	2010-03-08 12:27:31 UTC (rev 4738)
@@ -1758,6 +1758,30 @@
 }
 
 
+static gint geany_find_text(ScintillaObject *sci, gint flags, struct Sci_TextToFind *ttf)
+{
+	regex_t regex;
+	gint pos;
+	gint ret;
+
+	if (~flags & SCFIND_REGEXP)
+		return sci_find_text(sci, flags, ttf);
+
+	if (!compile_regex(&regex, ttf->lpstrText, flags))
+		return -1;
+
+	pos = ttf->chrg.cpMin;
+	ret = find_regex(sci, pos, &regex);
+	if (ret >= 0)
+	{
+		ttf->chrgText.cpMin = regex_matches[0].rm_so + pos;
+		ttf->chrgText.cpMax = regex_matches[0].rm_eo + pos;
+	}
+	regfree(&regex);
+	return ret;
+}
+
+
 static gint find_document_usage(GeanyDocument *doc, const gchar *search_text, gint flags)
 {
 	gchar *buffer, *short_file_name;
@@ -1776,7 +1800,7 @@
 	{
 		gint pos, line, start, find_len;
 
-		pos = sci_find_text(doc->editor->sci, flags, &ttf);
+		pos = geany_find_text(doc->editor->sci, flags, &ttf);
 		if (pos == -1)
 			break;	/* no more matches */
 		find_len = ttf.chrgText.cpMax - ttf.chrgText.cpMin;
@@ -1789,7 +1813,7 @@
 		{
 			buffer = sci_get_line(doc->editor->sci, line);
 			msgwin_msg_add(COLOR_BLACK, line + 1, doc,
-				"%s:%d : %s", short_file_name, line + 1, g_strstrip(buffer));
+				"%s:%d: %s", short_file_name, line + 1, g_strstrip(buffer));
 			g_free(buffer);
 			prev_line = line;
 		}


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