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.