https://bugs.kde.org/show_bug.cgi?id=365124

--- Comment #4 from Christoph Cullmann <cullm...@kde.org> ---
See:

Git commit 650f1a3a854fa9a27b9ffab563306327f8aa5c1a by Christoph Cullmann.
Committed on 08/09/2016 at 20:17.
Pushed by cullmann into branch 'master'.

support multi char captures only in {xxx} to avoid regressions

M  +1    -1    autotests/src/searchbar_test.cpp
M  +14   -2    src/search/kateregexpsearch.cpp

http://commits.kde.org/ktexteditor/650f1a3a854fa9a27b9ffab563306327f8aa5c1a

diff --git a/autotests/src/searchbar_test.cpp
b/autotests/src/searchbar_test.cpp
index c5b8e69..e3c568e 100644
--- a/autotests/src/searchbar_test.cpp
+++ b/autotests/src/searchbar_test.cpp
@@ -632,7 +632,7 @@ void SearchBarTest::testReplaceManyCapturesBug365124()

     bar.setSearchPattern("^(.*) (.*) (.*) (.*) (.*) (.*) (.*) (.*) (.*) (.*)
(.*) (.*) (.*)$");
     bar.setSearchMode(KateSearchBar::MODE_REGEX);
-   
bar.setReplacementPattern("\\1::\\2::\\3::\\4::\\5::\\6::\\7::\\8::\\9::\\10::\\11::\\12::\\13");
+   
bar.setReplacementPattern("\\{1}::\\2::\\3::\\4::\\5::\\6::\\7::\\8::\\9::\\{10}::\\{11}::\\{12}::\\{13}");

     bar.replaceAll();

diff --git a/src/search/kateregexpsearch.cpp b/src/search/kateregexpsearch.cpp
index 1ba7abd..2eea756 100644
--- a/src/search/kateregexpsearch.cpp
+++ b/src/search/kateregexpsearch.cpp
@@ -555,6 +555,7 @@ QVector<KTextEditor::Range> KateRegExpSearch::search(
                 }
                 break;

+            // single letter captures
             case L'1':
             case L'2':
             case L'3':
@@ -564,8 +565,15 @@ QVector<KTextEditor::Range> KateRegExpSearch::search(
             case L'7':
             case L'8':
             case L'9': {
-                // allow 1212124.... captures, see bug 365124 +
testReplaceManyCapturesBug365124
-                int capture = 9 - (L'9' - text[input + 1].unicode());
+                out << ReplacementStream::cap(9 - (L'9' - text[input +
1].unicode()));
+                input += 2;
+                break;
+            }
+
+            // multi letter captures
+            case L'{': {
+                // allow {1212124}.... captures, see bug 365124 +
testReplaceManyCapturesBug365124
+                int capture = 0;
                 int captureSize = 2;
                 while ((input + captureSize) < inputLen) {
                     const ushort nextDigit = text[input +
captureSize].unicode();
@@ -574,6 +582,10 @@ QVector<KTextEditor::Range> KateRegExpSearch::search(
                         ++captureSize;
                         continue;
                     }
+                    if (nextDigit == L'}') {
+                        ++captureSize;
+                        break;
+                    }
                     break;
                 }
                 out << ReplacementStream::cap(capture);

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to