diff options
author | con <qtc-committer@nokia.com> | 2010-06-11 08:57:38 +0200 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2010-06-11 11:07:48 +0200 |
commit | f232cd4ead41ac7f129f0d360363d8546a0c49ab (patch) | |
tree | 18dab8e4d8e28c691ecbef2bb8d82c61b1a36e1d /src/plugins/find/basetextfind.cpp | |
parent | 3b4b2c3ef60e98106d24bbe4e5f9e40f3d4d1731 (diff) | |
download | qt-creator-f232cd4ead41ac7f129f0d360363d8546a0c49ab.tar.gz |
Fixes: Multi-file regexp replace didn't replace placeholders e.g. \1
Diffstat (limited to 'src/plugins/find/basetextfind.cpp')
-rw-r--r-- | src/plugins/find/basetextfind.cpp | 39 |
1 files changed, 3 insertions, 36 deletions
diff --git a/src/plugins/find/basetextfind.cpp b/src/plugins/find/basetextfind.cpp index d2ddfc0441..86dd69e33c 100644 --- a/src/plugins/find/basetextfind.cpp +++ b/src/plugins/find/basetextfind.cpp @@ -30,6 +30,7 @@ #include "basetextfind.h" #include <utils/qtcassert.h> +#include <utils/filesearch.h> #include <QtGui/QTextBlock> #include <QtGui/QPlainTextEdit> @@ -152,40 +153,6 @@ IFindSupport::Result BaseTextFind::findStep(const QString &txt, IFindSupport::Fi return found ? Found : NotFound; } -namespace { - QString expandRegExpReplacement(const QString &replaceText, const QRegExp ®exp) - { - QString result; - for (int i = 0; i < replaceText.length(); ++i) { - QChar c = replaceText.at(i); - if (c == QLatin1Char('\\') && i < replaceText.length() - 1) { - c = replaceText.at(++i); - if (c == QLatin1Char('\\')) { - result += QLatin1Char('\\'); - } else if (c == QLatin1Char('&')) { - result += QLatin1Char('&'); - } else if (c.isDigit()) { - int index = c.unicode()-'1'; - if (index < regexp.numCaptures()) { - result += regexp.cap(index+1); - } else { - result += QLatin1Char('\\'); - result += c; - } - } else { - result += QLatin1Char('\\'); - result += c; - } - } else if (c == QLatin1Char('&')) { - result += regexp.cap(0); - } else { - result += c; - } - } - return result; - } -} - bool BaseTextFind::replaceStep(const QString &before, const QString &after, IFindSupport::FindFlags findFlags) { @@ -196,7 +163,7 @@ bool BaseTextFind::replaceStep(const QString &before, const QString &after, usesRegExp ? QRegExp::RegExp : QRegExp::FixedString); if (regexp.exactMatch(cursor.selectedText())) { - QString realAfter = usesRegExp ? expandRegExpReplacement(after, regexp) : after; + QString realAfter = usesRegExp ? Utils::expandRegExpReplacement(after, regexp.capturedTexts()) : after; int start = cursor.selectionStart(); cursor.insertText(realAfter); if ((findFlags&IFindSupport::FindBackward) != 0) @@ -226,7 +193,7 @@ int BaseTextFind::replaceAll(const QString &before, const QString &after, editCursor.setPosition(found.selectionStart()); editCursor.setPosition(found.selectionEnd(), QTextCursor::KeepAnchor); regexp.exactMatch(found.selectedText()); - QString realAfter = usesRegExp ? expandRegExpReplacement(after, regexp) : after; + QString realAfter = usesRegExp ? Utils::expandRegExpReplacement(after, regexp.capturedTexts()) : after; editCursor.insertText(realAfter); found = findOne(regexp, editCursor, IFindSupport::textDocumentFlagsForFindFlags(findFlags)); } |