Branch: refs/heads/document-messages Author: Nick Treleaven nick.treleaven@btinternet.com Committer: Nick Treleaven nick.treleaven@btinternet.com Date: Sun, 25 Dec 2011 13:42:19 Commit: 21f0715381a4a75298ca2fda2aa66c3003529070 https://github.com/geany/geany/commit/21f0715381a4a75298ca2fda2aa66c30035290...
Log Message: ----------- Fix \b regex word boundary always matching at start of search
Modified Paths: -------------- src/search.c
Modified: src/search.c 14 files changed, 5 insertions(+), 9 deletions(-) =================================================================== @@ -1859,7 +1859,6 @@ static gchar *get_regex_match_string(const gchar *text, CharOffsets *match) static gint find_regex(ScintillaObject *sci, guint pos, GRegex *regex) { const gchar *text; - gint flags = 0; GMatchInfo *minfo; gint ret = -1;
@@ -1868,14 +1867,11 @@ static gint find_regex(ScintillaObject *sci, guint pos, GRegex *regex) /* clear old match */ setptr(regex_match_text, NULL);
- if (sci_get_col_from_position(sci, pos) != 0) - flags = G_REGEX_MATCH_NOTBOL; /* Warning: any SCI calls will invalidate 'text' after calling SCI_GETCHARACTERPOINTER */ text = (void*)scintilla_send_message(sci, SCI_GETCHARACTERPOINTER, 0, 0); - text += pos;
/* Warning: minfo will become invalid when 'text' does! */ - if (g_regex_match(regex, text, flags, &minfo)) + if (g_regex_match_full(regex, text, -1, pos, 0, &minfo, NULL)) { gint i;
@@ -1890,7 +1886,7 @@ static gint find_regex(ScintillaObject *sci, guint pos, GRegex *regex) regex_matches[i].start = start; regex_matches[i].end = end; } - ret = regex_matches[0].start + pos; + ret = regex_matches[0].start; } g_match_info_free(minfo); return ret; @@ -1913,7 +1909,7 @@ gint search_find_next(ScintillaObject *sci, const gchar *str, gint flags) pos = sci_get_current_position(sci); ret = find_regex(sci, pos, regex); if (ret >= 0) - sci_set_selection(sci, ret, regex_matches[0].end + pos); + sci_set_selection(sci, ret, regex_matches[0].end);
g_regex_unref(regex); return ret; @@ -1983,8 +1979,8 @@ gint search_find_text(ScintillaObject *sci, gint flags, struct Sci_TextToFind *t
if (ret >= 0 && ret < ttf->chrg.cpMax) { - ttf->chrgText.cpMin = regex_matches[0].start + pos; - ttf->chrgText.cpMax = regex_matches[0].end + pos; + ttf->chrgText.cpMin = regex_matches[0].start; + ttf->chrgText.cpMax = regex_matches[0].end; } g_regex_unref(regex); return ret;
@@ Diff output truncated at 100000 characters. @@
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: TBD).