Revision: 4741 http://geany.svn.sourceforge.net/geany/?rev=4741&view=rev Author: ntrel Date: 2010-03-08 13:45:14 +0000 (Mon, 08 Mar 2010)
Log Message: ----------- Implement POSIX-regex Replace All (could be more efficient but seems OK for now).
Modified Paths: -------------- branches/gnu-regex/ChangeLog branches/gnu-regex/src/search.c
Modified: branches/gnu-regex/ChangeLog =================================================================== --- branches/gnu-regex/ChangeLog 2010-03-08 13:28:04 UTC (rev 4740) +++ branches/gnu-regex/ChangeLog 2010-03-08 13:45:14 UTC (rev 4741) @@ -6,6 +6,9 @@ Refactor document_replace_range() with search_replace_range(). * src/search.c, src/search.h, src/document.c: Move search_replace_range() to search.c. + * src/search.c: + Implement POSIX-regex Replace All (could be more efficient but + seems OK for now).
2010-03-02 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: branches/gnu-regex/src/search.c =================================================================== --- branches/gnu-regex/src/search.c 2010-03-08 13:28:04 UTC (rev 4740) +++ branches/gnu-regex/src/search.c 2010-03-08 13:45:14 UTC (rev 4741) @@ -1878,6 +1878,8 @@
/* ttf is updated to include the last match positions. * Note: Normally you would call sci_start/end_undo_action() around this call. */ +/* Warning: Scintilla recommends caching replacements to do all at once to avoid + * performance issues with SCI_GETCHARACTERPOINTER. */ guint search_replace_range(ScintillaObject *sci, struct Sci_TextToFind *ttf, gint flags, const gchar *replace_text) { @@ -1895,7 +1897,7 @@ gint search_pos; gint find_len = 0, replace_len = 0;
- search_pos = sci_find_text(sci, flags, ttf); + search_pos = geany_find_text(sci, flags, ttf); find_len = ttf->chrgText.cpMax - ttf->chrgText.cpMin; if (search_pos == -1) break; /* no more matches */ @@ -1918,7 +1920,7 @@ if (chNext == '\r' || chNext == '\n') movepastEOL = 1; } - replace_len = sci_replace_target(sci, replace_text, + replace_len = search_replace_target(sci, replace_text, flags & SCFIND_REGEXP); count++; if (search_pos == end)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.