diff options
author | Jarek Kobus <[email protected]> | 2023-06-01 21:04:18 +0200 |
---|---|---|
committer | Jarek Kobus <[email protected]> | 2023-06-02 11:51:08 +0000 |
commit | 64d209c24bb618fee5e0d4ba427d656c3b71e5ff (patch) | |
tree | 0a71134886b3360009d00732b3d8878ab551a74b /src/plugins/silversearcher/silversearcherparser.cpp | |
parent | 8da3575d7290be5002f06a363a622fd4ba70b803 (diff) |
SilverSearcher: Reuse searchInProcessOutput()
Change-Id: Ifc28a88c7bd0de94ea78c5f3eaaa2179b0aee600
Reviewed-by: Qt CI Bot <[email protected]>
Reviewed-by: Orgad Shaneh <[email protected]>
Diffstat (limited to 'src/plugins/silversearcher/silversearcherparser.cpp')
-rw-r--r-- | src/plugins/silversearcher/silversearcherparser.cpp | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/src/plugins/silversearcher/silversearcherparser.cpp b/src/plugins/silversearcher/silversearcherparser.cpp index 9cdf5211a67..1a2f5e55e87 100644 --- a/src/plugins/silversearcher/silversearcherparser.cpp +++ b/src/plugins/silversearcher/silversearcherparser.cpp @@ -3,8 +3,6 @@ #include "silversearcherparser.h" -#include <QFuture> - using namespace Utils; namespace SilverSearcher { @@ -96,28 +94,28 @@ static bool parseLineHits(QStringView *remainingInput, QList<QPair<int, int>> *h return true; } -void parse(QPromise<SearchResultItems> &promise, const QString &input, - ParserState *parserState, const std::optional<QRegularExpression> ®Exp) +SearchResultItems parse(const QFuture<void> &future, const QString &input, + const std::optional<QRegularExpression> ®Exp, FilePath *lastFilePath) { - QTC_ASSERT(parserState, return); + QTC_ASSERT(lastFilePath, return {}); SearchResultItems items; QStringView remainingInput(input); while (true) { - if (promise.isCanceled()) - return; + if (future.isCanceled()) + return {}; if (remainingInput.isEmpty()) break; const QStringView filePathLine = nextLine(&remainingInput); if (filePathLine.isEmpty()) { - parserState->m_lastFilePath = {}; // Clear the parser state + *lastFilePath = {}; // Clear the parser state continue; } if (filePathLine.startsWith(':')) - parserState->m_lastFilePath = FilePath::fromPathPart(filePathLine.mid(1)); + *lastFilePath = FilePath::fromPathPart(filePathLine.mid(1)); while (true) { QStringView hitLine = nextLine(&remainingInput); @@ -133,7 +131,7 @@ void parse(QPromise<SearchResultItems> &promise, const QString &input, break; SearchResultItem item; - item.setFilePath(parserState->m_lastFilePath); + item.setFilePath(*lastFilePath); item.setDisplayText(hitLine.toString()); item.setUseTextEditorFont(true); for (const QPair<int, int> &hit : hits) { @@ -145,20 +143,15 @@ void parse(QPromise<SearchResultItems> &promise, const QString &input, } } } - if (!items.isEmpty()) - promise.addResult(items); - - parserState->m_reportedResultsCount += items.count(); + return items; } SearchResultItems parse(const QString &input, const std::optional<QRegularExpression> ®Exp) { - QPromise<SearchResultItems> promise; + QPromise<void> promise; promise.start(); - ParserState dummy; - SilverSearcher::parse(promise, input, &dummy, regExp); - promise.finish(); - return promise.future().resultCount() ? promise.future().result() : SearchResultItems(); + FilePath dummy; + return SilverSearcher::parse(promise.future(), input, regExp, &dummy); } } // namespace SilverSearcher |