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(®ex, ttf->lpstrText, flags)) + return -1; + + pos = ttf->chrg.cpMin; + ret = find_regex(sci, pos, ®ex); + if (ret >= 0) + { + ttf->chrgText.cpMin = regex_matches[0].rm_so + pos; + ttf->chrgText.cpMax = regex_matches[0].rm_eo + pos; + } + regfree(®ex); + 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.