diff options
author | V.Barkov <[email protected]> | 2016-11-20 19:28:02 +0300 |
---|---|---|
committer | V.Barkov <[email protected]> | 2016-11-20 19:28:02 +0300 |
commit | 29f4e11f08ef02d6a3c6623b8a445502e3e98ed6 (patch) | |
tree | 3fbfcf64f603e98d99d4fec53ff4aaaa17ab7c20 | |
parent | 975393b8de593f6f6cab3cc12cfce0f34c475706 (diff) | |
download | pluma-29f4e11f08ef02d6a3c6623b8a445502e3e98ed6.tar.bz2 pluma-29f4e11f08ef02d6a3c6623b8a445502e3e98ed6.tar.xz |
Implemented "replace all" behavior for regexp
-rw-r--r-- | pluma/pluma-commands-search.c | 3 | ||||
-rw-r--r-- | pluma/pluma-document.c | 37 |
2 files changed, 27 insertions, 13 deletions
diff --git a/pluma/pluma-commands-search.c b/pluma/pluma-commands-search.c index 6903d381..393b088a 100644 --- a/pluma/pluma-commands-search.c +++ b/pluma/pluma-commands-search.c @@ -431,6 +431,7 @@ do_replace_all (PlumaSearchDialog *dialog, const gchar *search_entry_text; const gchar *replace_entry_text; gboolean match_case; + gboolean match_regex; gboolean entire_word; gboolean parse_escapes; guint flags = 0; @@ -460,9 +461,11 @@ do_replace_all (PlumaSearchDialog *dialog, g_return_if_fail ((replace_entry_text) != NULL); match_case = pluma_search_dialog_get_match_case (dialog); + match_regex = pluma_search_dialog_get_match_regex(dialog); entire_word = pluma_search_dialog_get_entire_word (dialog); PLUMA_SEARCH_SET_CASE_SENSITIVE (flags, match_case); + PLUMA_SEARCH_SET_MATCH_REGEX (flags, match_regex); PLUMA_SEARCH_SET_ENTIRE_WORD (flags, entire_word); count = pluma_document_replace_all (doc, diff --git a/pluma/pluma-document.c b/pluma/pluma-document.c index 43abf989..11ad1372 100644 --- a/pluma/pluma-document.c +++ b/pluma/pluma-document.c @@ -2009,12 +2009,12 @@ pluma_document_search_backward (PlumaDocument *doc, { if(!PLUMA_SEARCH_IS_MATCH_REGEX(doc->priv->search_flags)) { - found = gtk_text_iter_backward_search (&iter, - doc->priv->search_text, - search_flags, - &m_start, - &m_end, - start); + found = gtk_text_iter_backward_search (&iter, + doc->priv->search_text, + search_flags, + &m_start, + &m_end, + start); } else{ found = pluma_gtk_text_iter_regex_search (&iter, @@ -2109,12 +2109,23 @@ pluma_document_replace_all (PlumaDocument *doc, do { - found = gtk_text_iter_forward_search (&iter, - search_text, - search_flags, - &m_start, - &m_end, - NULL); + if(!PLUMA_SEARCH_IS_MATCH_REGEX(flags)) + { + found = gtk_text_iter_forward_search (&iter, + search_text, + search_flags, + &m_start, + &m_end, + NULL); + }else{ + found = pluma_gtk_text_iter_regex_search (&iter, + search_text, + search_flags, + &m_start, + &m_end, + NULL, + TRUE); + } if (found && PLUMA_SEARCH_IS_ENTIRE_WORD (flags)) { @@ -2143,7 +2154,7 @@ pluma_document_replace_all (PlumaDocument *doc, replace_text_len); iter = m_start; - } + } } while (found); |