forked from qt-creator/qt-creator
Utils: Move SearchResultItem/Color into Utils
It's going to be reused inside FileSearch. Change-Id: I8993d7158ff31c311c2283d32bc43465a8946a52 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -147,6 +147,7 @@ add_qtc_library(Utils
|
||||
runextensions.cpp runextensions.h
|
||||
savefile.cpp savefile.h
|
||||
scopedswap.h
|
||||
searchresultitem.cpp searchresultitem.h
|
||||
set_algorithm.h
|
||||
settingsaccessor.cpp settingsaccessor.h
|
||||
settingsselector.cpp settingsselector.h
|
||||
|
||||
59
src/libs/utils/searchresultitem.cpp
Normal file
59
src/libs/utils/searchresultitem.cpp
Normal file
@@ -0,0 +1,59 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "searchresultitem.h"
|
||||
|
||||
namespace Utils {
|
||||
|
||||
int Search::TextRange::length(const QString &text) const
|
||||
{
|
||||
if (begin.line == end.line)
|
||||
return end.column - begin.column;
|
||||
|
||||
const int lineCount = end.line - begin.line;
|
||||
int index = text.indexOf(QChar::LineFeed);
|
||||
int currentLine = 1;
|
||||
while (index > 0 && currentLine < lineCount) {
|
||||
++index;
|
||||
index = text.indexOf(QChar::LineFeed, index);
|
||||
++currentLine;
|
||||
}
|
||||
|
||||
if (index < 0)
|
||||
return 0;
|
||||
|
||||
return index - begin.column + end.column;
|
||||
}
|
||||
|
||||
SearchResultColor::SearchResultColor(const QColor &textBg, const QColor &textFg,
|
||||
const QColor &highlightBg, const QColor &highlightFg,
|
||||
const QColor &functionBg, const QColor &functionFg)
|
||||
: textBackground(textBg)
|
||||
, textForeground(textFg)
|
||||
, highlightBackground(highlightBg)
|
||||
, highlightForeground(highlightFg)
|
||||
, containingFunctionBackground(functionBg)
|
||||
, containingFunctionForeground(functionFg)
|
||||
{
|
||||
if (!highlightBackground.isValid())
|
||||
highlightBackground = textBackground;
|
||||
if (!highlightForeground.isValid())
|
||||
highlightForeground = textForeground;
|
||||
if (!containingFunctionBackground.isValid())
|
||||
containingFunctionBackground = textBackground;
|
||||
if (!containingFunctionForeground.isValid())
|
||||
containingFunctionForeground = textForeground;
|
||||
}
|
||||
|
||||
QTCREATOR_UTILS_EXPORT size_t qHash(SearchResultColor::Style style, uint seed)
|
||||
{
|
||||
int a = int(style);
|
||||
return ::qHash(a, seed);
|
||||
}
|
||||
|
||||
void SearchResultItem::setMainRange(int line, int column, int length)
|
||||
{
|
||||
m_mainRange = {{line, column}, {line, column + length}};
|
||||
}
|
||||
|
||||
} // namespace Utils
|
||||
@@ -1,82 +1,78 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "searchresultcolor.h"
|
||||
#include "utils_global.h"
|
||||
|
||||
#include <utils/filepath.h>
|
||||
#include <utils/hostosinfo.h>
|
||||
|
||||
#include <QColor>
|
||||
#include <QHash>
|
||||
#include <QIcon>
|
||||
#include <QStringList>
|
||||
#include <QVariant>
|
||||
|
||||
#include <optional>
|
||||
|
||||
namespace Core {
|
||||
namespace Utils {
|
||||
|
||||
namespace Search {
|
||||
|
||||
class TextPosition
|
||||
class QTCREATOR_UTILS_EXPORT TextPosition
|
||||
{
|
||||
public:
|
||||
TextPosition() = default;
|
||||
TextPosition(int line, int column) : line(line), column(column) {}
|
||||
|
||||
int line = -1; // (0 or -1 for no line number)
|
||||
int column = -1; // 0-based starting position for a mark (-1 for no mark)
|
||||
|
||||
bool operator<(const TextPosition &other)
|
||||
bool operator<(const TextPosition &other) const
|
||||
{ return line < other.line || (line == other.line && column < other.column); }
|
||||
};
|
||||
|
||||
class TextRange
|
||||
class QTCREATOR_UTILS_EXPORT TextRange
|
||||
{
|
||||
public:
|
||||
TextRange() = default;
|
||||
TextRange(TextPosition begin, TextPosition end) : begin(begin), end(end) {}
|
||||
|
||||
QString mid(const QString &text) const { return text.mid(begin.column, length(text)); }
|
||||
|
||||
int length(const QString &text) const
|
||||
{
|
||||
if (begin.line == end.line)
|
||||
return end.column - begin.column;
|
||||
|
||||
const int lineCount = end.line - begin.line;
|
||||
int index = text.indexOf(QChar::LineFeed);
|
||||
int currentLine = 1;
|
||||
while (index > 0 && currentLine < lineCount) {
|
||||
++index;
|
||||
index = text.indexOf(QChar::LineFeed, index);
|
||||
++currentLine;
|
||||
}
|
||||
|
||||
if (index < 0)
|
||||
return 0;
|
||||
|
||||
return index - begin.column + end.column;
|
||||
}
|
||||
int length(const QString &text) const;
|
||||
|
||||
TextPosition begin;
|
||||
TextPosition end;
|
||||
|
||||
bool operator<(const TextRange &other)
|
||||
{ return begin < other.begin; }
|
||||
bool operator<(const TextRange &other) const { return begin < other.begin; }
|
||||
};
|
||||
|
||||
} // namespace Search
|
||||
|
||||
class CORE_EXPORT SearchResultItem
|
||||
class QTCREATOR_UTILS_EXPORT SearchResultColor
|
||||
{
|
||||
public:
|
||||
enum class Style { Default, Alt1, Alt2 };
|
||||
|
||||
SearchResultColor() = default;
|
||||
SearchResultColor(const QColor &textBg, const QColor &textFg,
|
||||
const QColor &highlightBg, const QColor &highlightFg,
|
||||
const QColor &functionBg, const QColor &functionFg);
|
||||
|
||||
QColor textBackground;
|
||||
QColor textForeground;
|
||||
QColor highlightBackground;
|
||||
QColor highlightForeground;
|
||||
QColor containingFunctionBackground;
|
||||
QColor containingFunctionForeground;
|
||||
|
||||
private:
|
||||
QTCREATOR_UTILS_EXPORT friend size_t qHash(Style style, uint seed);
|
||||
};
|
||||
|
||||
using SearchResultColors = QHash<SearchResultColor::Style, SearchResultColor>;
|
||||
|
||||
class QTCREATOR_UTILS_EXPORT SearchResultItem
|
||||
{
|
||||
public:
|
||||
QStringList path() const { return m_path; }
|
||||
void setPath(const QStringList &path) { m_path = path; }
|
||||
void setFilePath(const Utils::FilePath &filePath)
|
||||
{
|
||||
m_path = QStringList{filePath.toUserOutput()};
|
||||
}
|
||||
void setFilePath(const Utils::FilePath &filePath) { m_path = {filePath.toUserOutput()}; }
|
||||
|
||||
QString lineText() const { return m_lineText; }
|
||||
void setLineText(const QString &text) { m_lineText = text; }
|
||||
@@ -89,14 +85,7 @@ public:
|
||||
|
||||
Search::TextRange mainRange() const { return m_mainRange; }
|
||||
void setMainRange(const Search::TextRange &mainRange) { m_mainRange = mainRange; }
|
||||
void setMainRange(int line, int column, int length)
|
||||
{
|
||||
m_mainRange = {};
|
||||
m_mainRange.begin.line = line;
|
||||
m_mainRange.begin.column = column;
|
||||
m_mainRange.end.line = m_mainRange.begin.line;
|
||||
m_mainRange.end.column = m_mainRange.begin.column + length;
|
||||
}
|
||||
void setMainRange(int line, int column, int length);
|
||||
|
||||
bool useTextEditorFont() const { return m_useTextEditorFont; }
|
||||
void setUseTextEditorFont(bool useTextEditorFont) { m_useTextEditorFont = useTextEditorFont; }
|
||||
@@ -109,9 +98,9 @@ public:
|
||||
|
||||
std::optional<QString> containingFunctionName() const { return m_containingFunctionName; }
|
||||
|
||||
void setContainingFunctionName(std::optional<QString> containingFunctionName)
|
||||
void setContainingFunctionName(const std::optional<QString> &containingFunctionName)
|
||||
{
|
||||
m_containingFunctionName = std::move(containingFunctionName);
|
||||
m_containingFunctionName = containingFunctionName;
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -126,7 +115,7 @@ private:
|
||||
std::optional<QString> m_containingFunctionName;
|
||||
};
|
||||
|
||||
} // namespace Core
|
||||
} // namespace Utils
|
||||
|
||||
Q_DECLARE_METATYPE(Core::SearchResultItem)
|
||||
Q_DECLARE_METATYPE(Core::Search::TextPosition)
|
||||
Q_DECLARE_METATYPE(Utils::SearchResultItem)
|
||||
Q_DECLARE_METATYPE(Utils::Search::TextPosition)
|
||||
@@ -275,6 +275,8 @@ Project {
|
||||
"savefile.cpp",
|
||||
"savefile.h",
|
||||
"scopedswap.h",
|
||||
"searchresultitem.cpp",
|
||||
"searchresultitem.h",
|
||||
"set_algorithm.h",
|
||||
"settingsaccessor.cpp",
|
||||
"settingsaccessor.h",
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <coreplugin/find/searchresultitem.h>
|
||||
#include <cppeditor/baseeditordocumentparser.h>
|
||||
#include <cppeditor/cppcodemodelsettings.h>
|
||||
#include <cppeditor/cursorineditor.h>
|
||||
#include <languageclient/client.h>
|
||||
#include <utils/link.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QVersionNumber>
|
||||
|
||||
@@ -119,7 +119,7 @@ public:
|
||||
|
||||
signals:
|
||||
void indexingFinished();
|
||||
void foundReferences(const QList<Core::SearchResultItem> &items);
|
||||
void foundReferences(const QList<Utils::SearchResultItem> &items);
|
||||
void findUsagesDone();
|
||||
void helpItemGathered(const Core::HelpItem &helpItem);
|
||||
void highlightingResultsReady(const TextEditor::HighlightingResults &results,
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <coreplugin/find/searchresultitem.h>
|
||||
#include <cppeditor/cursorineditor.h>
|
||||
#include <utils/link.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QObject>
|
||||
|
||||
@@ -35,7 +35,7 @@ public:
|
||||
~ClangdFindReferences();
|
||||
|
||||
signals:
|
||||
void foundReferences(const QList<Core::SearchResultItem> &items);
|
||||
void foundReferences(const QList<Utils::SearchResultItem> &items);
|
||||
void done();
|
||||
|
||||
private:
|
||||
|
||||
@@ -43,6 +43,7 @@ using namespace CppEditor::Tests;
|
||||
using namespace LanguageClient;
|
||||
using namespace ProjectExplorer;
|
||||
using namespace TextEditor;
|
||||
using namespace Utils;
|
||||
|
||||
namespace ClangCodeModel {
|
||||
namespace Internal {
|
||||
@@ -97,7 +98,7 @@ ClangdTest::~ClangdTest()
|
||||
delete m_projectDir;
|
||||
}
|
||||
|
||||
Utils::FilePath ClangdTest::filePath(const QString &fileName) const
|
||||
FilePath ClangdTest::filePath(const QString &fileName) const
|
||||
{
|
||||
return m_projectDir->absolutePath(fileName);
|
||||
}
|
||||
@@ -139,7 +140,7 @@ void ClangdTest::initTestCase()
|
||||
{
|
||||
const QString clangdFromEnv = Utils::qtcEnvironmentVariable("QTC_CLANGD");
|
||||
if (!clangdFromEnv.isEmpty())
|
||||
CppEditor::ClangdSettings::setClangdFilePath(Utils::FilePath::fromString(clangdFromEnv));
|
||||
CppEditor::ClangdSettings::setClangdFilePath(FilePath::fromString(clangdFromEnv));
|
||||
const auto clangd = CppEditor::ClangdSettings::instance().clangdFilePath();
|
||||
if (clangd.isEmpty() || !clangd.exists())
|
||||
QSKIP("clangd binary not found");
|
||||
@@ -408,13 +409,13 @@ void ClangdTestFollowSymbol::test()
|
||||
timer.setSingleShot(true);
|
||||
QEventLoop loop;
|
||||
QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
Utils::Link actualLink;
|
||||
const auto handler = [&actualLink, &loop](const Utils::Link &l) {
|
||||
Link actualLink;
|
||||
const auto handler = [&actualLink, &loop](const Link &l) {
|
||||
actualLink = l;
|
||||
loop.quit();
|
||||
};
|
||||
QTextCursor cursor(doc->document());
|
||||
const int pos = Utils::Text::positionInText(doc->document(), sourceLine, sourceColumn);
|
||||
const int pos = Text::positionInText(doc->document(), sourceLine, sourceColumn);
|
||||
cursor.setPosition(pos);
|
||||
client()->followSymbol(doc, cursor, nullptr, handler, true,
|
||||
goToType ? FollowTo::SymbolType : FollowTo::SymbolDef, false);
|
||||
@@ -520,15 +521,14 @@ void ClangdTestLocalReferences::test()
|
||||
QEventLoop loop;
|
||||
QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
QList<Range> actualRanges;
|
||||
const auto handler = [&actualRanges, &loop](const QString &symbol,
|
||||
const Utils::Links &links, int) {
|
||||
for (const Utils::Link &link : links)
|
||||
const auto handler = [&actualRanges, &loop](const QString &symbol, const Links &links, int) {
|
||||
for (const Link &link : links)
|
||||
actualRanges << Range(link.targetLine, link.targetColumn, symbol.length());
|
||||
loop.quit();
|
||||
};
|
||||
|
||||
QTextCursor cursor(doc->document());
|
||||
const int pos = Utils::Text::positionInText(doc->document(), sourceLine, sourceColumn);
|
||||
const int pos = Text::positionInText(doc->document(), sourceLine, sourceColumn);
|
||||
cursor.setPosition(pos);
|
||||
client()->findLocalUsages(doc, cursor, std::move(handler));
|
||||
timer.start(10000);
|
||||
@@ -659,7 +659,7 @@ void ClangdTestTooltips::test()
|
||||
connect(client(), &ClangdClient::helpItemGathered, &loop, handler);
|
||||
|
||||
QTextCursor cursor(doc->document());
|
||||
const int pos = Utils::Text::positionInText(doc->document(), line, column);
|
||||
const int pos = Text::positionInText(doc->document(), line, column);
|
||||
cursor.setPosition(pos);
|
||||
editor->editorWidget()->processTooltipRequest(cursor);
|
||||
|
||||
@@ -1316,11 +1316,11 @@ void ClangdTestHighlighting::test()
|
||||
|
||||
const TextEditor::TextDocument * const doc = document("highlighting.cpp");
|
||||
QVERIFY(doc);
|
||||
const int startPos = Utils::Text::positionInText(doc->document(), firstLine, startColumn);
|
||||
const int endPos = Utils::Text::positionInText(doc->document(), lastLine, endColumn);
|
||||
const int startPos = Text::positionInText(doc->document(), firstLine, startColumn);
|
||||
const int endPos = Text::positionInText(doc->document(), lastLine, endColumn);
|
||||
|
||||
const auto lessThan = [=](const TextEditor::HighlightingResult &r, int) {
|
||||
return Utils::Text::positionInText(doc->document(), r.line, r.column) < startPos;
|
||||
return Text::positionInText(doc->document(), r.line, r.column) < startPos;
|
||||
};
|
||||
const auto findResults = [=] {
|
||||
TextEditor::HighlightingResults results;
|
||||
@@ -1328,7 +1328,7 @@ void ClangdTestHighlighting::test()
|
||||
if (it == m_results.cend())
|
||||
return results;
|
||||
while (it != m_results.cend()) {
|
||||
const int resultEndPos = Utils::Text::positionInText(doc->document(), it->line,
|
||||
const int resultEndPos = Text::positionInText(doc->document(), it->line,
|
||||
it->column) + it->length;
|
||||
if (resultEndPos > endPos)
|
||||
break;
|
||||
@@ -1439,7 +1439,7 @@ public:
|
||||
{
|
||||
const int pos = currentPosition();
|
||||
QPair<int, int> lineAndColumn;
|
||||
Utils::Text::convertPosition(m_doc, pos, &lineAndColumn.first, &lineAndColumn.second);
|
||||
Text::convertPosition(m_doc, pos, &lineAndColumn.first, &lineAndColumn.second);
|
||||
return lineAndColumn;
|
||||
}
|
||||
|
||||
@@ -1864,7 +1864,7 @@ void ClangdTestCompletion::startCollectingHighlightingInfo()
|
||||
{
|
||||
m_documentsWithHighlighting.clear();
|
||||
connect(client(), &ClangdClient::highlightingResultsReady, this,
|
||||
[this](const HighlightingResults &, const Utils::FilePath &file) {
|
||||
[this](const HighlightingResults &, const FilePath &file) {
|
||||
m_documentsWithHighlighting.insert(file);
|
||||
});
|
||||
}
|
||||
@@ -1881,7 +1881,7 @@ void ClangdTestCompletion::getProposal(const QString &fileName,
|
||||
if (cursorPos)
|
||||
*cursorPos = pos;
|
||||
int line, column;
|
||||
Utils::Text::convertPosition(doc->document(), pos, &line, &column);
|
||||
Text::convertPosition(doc->document(), pos, &line, &column);
|
||||
const auto editor = qobject_cast<BaseTextEditor *>(
|
||||
EditorManager::openEditorAt({doc->filePath(), line, column - 1}));
|
||||
QVERIFY(editor);
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <cppeditor/cpptoolstestcase.h>
|
||||
#include <coreplugin/find/searchresultitem.h>
|
||||
#include <texteditor/blockrange.h>
|
||||
#include <texteditor/codeassist/genericproposal.h>
|
||||
#include <texteditor/semantichighlighter.h>
|
||||
#include <utils/fileutils.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QHash>
|
||||
#include <QObject>
|
||||
@@ -74,7 +74,7 @@ private slots:
|
||||
void test();
|
||||
|
||||
private:
|
||||
QList<Core::SearchResultItem> m_actualResults;
|
||||
QList<Utils::SearchResultItem> m_actualResults;
|
||||
};
|
||||
|
||||
class ClangdTestFollowSymbol : public ClangdTest
|
||||
|
||||
@@ -72,8 +72,6 @@ add_qtc_plugin(Core
|
||||
find/ifindsupport.cpp find/ifindsupport.h
|
||||
find/itemviewfind.cpp find/itemviewfind.h
|
||||
find/optionspopup.cpp find/optionspopup.h
|
||||
find/searchresultcolor.h
|
||||
find/searchresultitem.h
|
||||
find/searchresulttreeitemdelegate.cpp find/searchresulttreeitemdelegate.h
|
||||
find/searchresulttreeitemroles.h
|
||||
find/searchresulttreeitems.cpp find/searchresulttreeitems.h
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <utils/mimeutils.h>
|
||||
#include <utils/pathchooser.h>
|
||||
#include <utils/savefile.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
#include <utils/stringutils.h>
|
||||
#include <utils/theme/theme.h>
|
||||
#include <utils/theme/theme_p.h>
|
||||
@@ -71,7 +72,7 @@ void CorePlugin::setupSystemEnvironment()
|
||||
CorePlugin::CorePlugin()
|
||||
{
|
||||
qRegisterMetaType<Id>();
|
||||
qRegisterMetaType<Core::Search::TextPosition>();
|
||||
qRegisterMetaType<Utils::Search::TextPosition>();
|
||||
qRegisterMetaType<Utils::CommandLine>();
|
||||
qRegisterMetaType<Utils::FilePath>();
|
||||
qRegisterMetaType<Utils::Environment>();
|
||||
|
||||
@@ -306,8 +306,6 @@ Project {
|
||||
"itemviewfind.h",
|
||||
"optionspopup.cpp",
|
||||
"optionspopup.h",
|
||||
"searchresultcolor.h",
|
||||
"searchresultitem.h",
|
||||
"searchresulttreeitemdelegate.cpp",
|
||||
"searchresulttreeitemdelegate.h",
|
||||
"searchresulttreeitemroles.h",
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#include "../editormanager/ieditorfactory_p.h"
|
||||
#include "../editormanager/iexternaleditor.h"
|
||||
#include "../fileutils.h"
|
||||
#include "../find/searchresultitem.h"
|
||||
#include "../findplaceholder.h"
|
||||
#include "../icore.h"
|
||||
#include "../iversioncontrol.h"
|
||||
@@ -52,6 +51,7 @@
|
||||
#include <utils/mimeutils.h>
|
||||
#include <utils/overridecursor.h>
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
#include <utils/stringutils.h>
|
||||
#include <utils/utilsicons.h>
|
||||
|
||||
|
||||
@@ -22,18 +22,14 @@ QT_BEGIN_NAMESPACE
|
||||
class QMenu;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Utils { class MimeType; }
|
||||
namespace Utils { class SearchResultItem; }
|
||||
|
||||
namespace Core {
|
||||
|
||||
class IDocument;
|
||||
class LocatorFilterEntry;
|
||||
class SearchResultItem;
|
||||
|
||||
namespace Internal {
|
||||
class EditorManagerPrivate;
|
||||
class MainWindow;
|
||||
} // namespace Internal
|
||||
namespace Internal { class MainWindow; }
|
||||
|
||||
class CORE_EXPORT EditorManagerPlaceHolder final : public QWidget
|
||||
{
|
||||
@@ -79,7 +75,7 @@ public:
|
||||
bool *newEditor = nullptr);
|
||||
static IEditor *openEditor(const LocatorFilterEntry &entry);
|
||||
|
||||
static void openEditorAtSearchResult(const SearchResultItem &item,
|
||||
static void openEditorAtSearchResult(const Utils::SearchResultItem &item,
|
||||
Utils::Id editorId = {},
|
||||
OpenEditorFlags flags = NoFlags,
|
||||
bool *newEditor = nullptr);
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../core_global.h"
|
||||
|
||||
#include <QColor>
|
||||
#include <QHash>
|
||||
|
||||
namespace Core {
|
||||
|
||||
class CORE_EXPORT SearchResultColor
|
||||
{
|
||||
public:
|
||||
enum class Style { Default, Alt1, Alt2 };
|
||||
|
||||
SearchResultColor() = default;
|
||||
SearchResultColor(const QColor &textBg, const QColor &textFg,
|
||||
const QColor &highlightBg, const QColor &highlightFg,
|
||||
const QColor &functionBg, const QColor &functionFg
|
||||
)
|
||||
: textBackground(textBg), textForeground(textFg),
|
||||
highlightBackground(highlightBg), highlightForeground(highlightFg),
|
||||
containingFunctionBackground(functionBg),containingFunctionForeground(functionFg)
|
||||
{
|
||||
if (!highlightBackground.isValid())
|
||||
highlightBackground = textBackground;
|
||||
if (!highlightForeground.isValid())
|
||||
highlightForeground = textForeground;
|
||||
if (!containingFunctionBackground.isValid())
|
||||
containingFunctionBackground = textBackground;
|
||||
if (!containingFunctionForeground.isValid())
|
||||
containingFunctionForeground = textForeground;
|
||||
}
|
||||
|
||||
friend auto qHash(SearchResultColor::Style style)
|
||||
{
|
||||
return QT_PREPEND_NAMESPACE(qHash(int(style)));
|
||||
}
|
||||
|
||||
QColor textBackground;
|
||||
QColor textForeground;
|
||||
QColor highlightBackground;
|
||||
QColor highlightForeground;
|
||||
QColor containingFunctionBackground;
|
||||
QColor containingFunctionForeground;
|
||||
};
|
||||
|
||||
using SearchResultColors = QHash<SearchResultColor::Style, SearchResultColor>;
|
||||
|
||||
} // namespace Core
|
||||
@@ -3,10 +3,12 @@
|
||||
|
||||
#include "searchresulttreeitems.h"
|
||||
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
namespace Core {
|
||||
namespace Internal {
|
||||
|
||||
SearchResultTreeItem::SearchResultTreeItem(const SearchResultItem &item,
|
||||
SearchResultTreeItem::SearchResultTreeItem(const Utils::SearchResultItem &item,
|
||||
SearchResultTreeItem *parent)
|
||||
: item(item),
|
||||
m_parent(parent),
|
||||
@@ -79,7 +81,8 @@ int SearchResultTreeItem::insertionIndex(const QString &text, SearchResultTreeIt
|
||||
return insertionPosition - m_children.begin();
|
||||
}
|
||||
|
||||
int SearchResultTreeItem::insertionIndex(const SearchResultItem &item, SearchResultTreeItem **existingItem) const
|
||||
int SearchResultTreeItem::insertionIndex(const Utils::SearchResultItem &item,
|
||||
SearchResultTreeItem **existingItem) const
|
||||
{
|
||||
return insertionIndex(item.lineText(), existingItem);
|
||||
}
|
||||
@@ -89,13 +92,13 @@ void SearchResultTreeItem::insertChild(int index, SearchResultTreeItem *child)
|
||||
m_children.insert(index, child);
|
||||
}
|
||||
|
||||
void SearchResultTreeItem::insertChild(int index, const SearchResultItem &item)
|
||||
void SearchResultTreeItem::insertChild(int index, const Utils::SearchResultItem &item)
|
||||
{
|
||||
auto child = new SearchResultTreeItem(item, this);
|
||||
insertChild(index, child);
|
||||
}
|
||||
|
||||
void SearchResultTreeItem::appendChild(const SearchResultItem &item)
|
||||
void SearchResultTreeItem::appendChild(const Utils::SearchResultItem &item)
|
||||
{
|
||||
insertChild(m_children.count(), item);
|
||||
}
|
||||
|
||||
@@ -5,8 +5,7 @@
|
||||
|
||||
#include "searchresultwindow.h"
|
||||
|
||||
#include <QString>
|
||||
#include <QList>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
namespace Core {
|
||||
namespace Internal {
|
||||
@@ -14,7 +13,7 @@ namespace Internal {
|
||||
class SearchResultTreeItem
|
||||
{
|
||||
public:
|
||||
explicit SearchResultTreeItem(const SearchResultItem &item = SearchResultItem(),
|
||||
explicit SearchResultTreeItem(const Utils::SearchResultItem &item = {},
|
||||
SearchResultTreeItem *parent = nullptr);
|
||||
virtual ~SearchResultTreeItem();
|
||||
|
||||
@@ -22,10 +21,10 @@ public:
|
||||
SearchResultTreeItem *parent() const;
|
||||
SearchResultTreeItem *childAt(int index) const;
|
||||
int insertionIndex(const QString &text, SearchResultTreeItem **existingItem) const;
|
||||
int insertionIndex(const SearchResultItem &item, SearchResultTreeItem **existingItem) const;
|
||||
int insertionIndex(const Utils::SearchResultItem &item, SearchResultTreeItem **existingItem) const;
|
||||
void insertChild(int index, SearchResultTreeItem *child);
|
||||
void insertChild(int index, const SearchResultItem &item);
|
||||
void appendChild(const SearchResultItem &item);
|
||||
void insertChild(int index, const Utils::SearchResultItem &item);
|
||||
void appendChild(const Utils::SearchResultItem &item);
|
||||
int childrenCount() const;
|
||||
int rowOfItem() const;
|
||||
void clearChildren();
|
||||
@@ -36,7 +35,7 @@ public:
|
||||
bool isGenerated() const { return m_isGenerated; }
|
||||
void setGenerated(bool value) { m_isGenerated = value; }
|
||||
|
||||
SearchResultItem item;
|
||||
Utils::SearchResultItem item;
|
||||
|
||||
private:
|
||||
SearchResultTreeItem *m_parent;
|
||||
|
||||
@@ -6,12 +6,15 @@
|
||||
#include "searchresulttreeitemroles.h"
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QFont>
|
||||
#include <QFontMetrics>
|
||||
#include <QDebug>
|
||||
|
||||
using namespace Utils;
|
||||
|
||||
namespace Core {
|
||||
namespace Internal {
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "searchresultwindow.h"
|
||||
#include "searchresultcolor.h"
|
||||
|
||||
#include <QFont>
|
||||
#include <QSortFilterProxyModel>
|
||||
@@ -25,8 +24,9 @@ public:
|
||||
|
||||
void setFilter(SearchResultFilter *filter);
|
||||
void setShowReplaceUI(bool show);
|
||||
void setTextEditorFont(const QFont &font, const SearchResultColors &colors);
|
||||
QList<QModelIndex> addResults(const QList<SearchResultItem> &items, SearchResult::AddMode mode);
|
||||
void setTextEditorFont(const QFont &font, const Utils::SearchResultColors &colors);
|
||||
QList<QModelIndex> addResults(const QList<Utils::SearchResultItem> &items,
|
||||
SearchResult::AddMode mode);
|
||||
void clear();
|
||||
QModelIndex next(const QModelIndex &idx, bool includeGenerated = false,
|
||||
bool *wrapped = nullptr) const;
|
||||
|
||||
@@ -7,11 +7,14 @@
|
||||
#include "searchresulttreeitemdelegate.h"
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QHeaderView>
|
||||
#include <QKeyEvent>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
using namespace Utils;
|
||||
|
||||
namespace Core {
|
||||
namespace Internal {
|
||||
|
||||
@@ -31,7 +34,7 @@ public:
|
||||
};
|
||||
|
||||
SearchResultTreeView::SearchResultTreeView(QWidget *parent)
|
||||
: Utils::TreeView(parent)
|
||||
: TreeView(parent)
|
||||
, m_model(new SearchResultFilterModel(this))
|
||||
, m_autoExpandResults(false)
|
||||
{
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
#include "searchresultwindow.h"
|
||||
|
||||
#include <utils/itemviews.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
namespace Core {
|
||||
class SearchResultColor;
|
||||
|
||||
namespace Internal {
|
||||
|
||||
@@ -22,11 +22,11 @@ public:
|
||||
explicit SearchResultTreeView(QWidget *parent = nullptr);
|
||||
|
||||
void setAutoExpandResults(bool expand);
|
||||
void setTextEditorFont(const QFont &font, const SearchResultColors &colors);
|
||||
void setTextEditorFont(const QFont &font, const Utils::SearchResultColors &colors);
|
||||
void setTabWidth(int tabWidth);
|
||||
|
||||
SearchResultFilterModel *model() const;
|
||||
void addResults(const QList<SearchResultItem> &items, SearchResult::AddMode mode);
|
||||
void addResults(const QList<Utils::SearchResultItem> &items, SearchResult::AddMode mode);
|
||||
void setFilter(SearchResultFilter *filter);
|
||||
bool hasFilter() const;
|
||||
void showFilterWidget(QWidget *parent);
|
||||
@@ -35,7 +35,7 @@ public:
|
||||
bool event(QEvent *e) override;
|
||||
|
||||
signals:
|
||||
void jumpToSearchResult(const SearchResultItem &item);
|
||||
void jumpToSearchResult(const Utils::SearchResultItem &item);
|
||||
void filterInvalidated();
|
||||
void filterChanged();
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "searchresultwindow.h"
|
||||
|
||||
#include <utils/infobar.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
@@ -33,7 +34,7 @@ public:
|
||||
QWidget *additionalReplaceWidget() const;
|
||||
void setAdditionalReplaceWidget(QWidget *widget);
|
||||
|
||||
void addResults(const QList<SearchResultItem> &items, SearchResult::AddMode mode);
|
||||
void addResults(const QList<Utils::SearchResultItem> &items, SearchResult::AddMode mode);
|
||||
|
||||
int count() const;
|
||||
bool isSearching() const { return m_searching; }
|
||||
@@ -52,7 +53,7 @@ public:
|
||||
|
||||
void notifyVisibilityChanged(bool visible);
|
||||
|
||||
void setTextEditorFont(const QFont &font, const SearchResultColors &colors);
|
||||
void setTextEditorFont(const QFont &font, const Utils::SearchResultColors &colors);
|
||||
void setTabWidth(int tabWidth);
|
||||
|
||||
void setAutoExpandResults(bool expand);
|
||||
@@ -76,8 +77,9 @@ public slots:
|
||||
void sendRequestPopup();
|
||||
|
||||
signals:
|
||||
void activated(const Core::SearchResultItem &item);
|
||||
void replaceButtonClicked(const QString &replaceText, const QList<Core::SearchResultItem> &checkedItems, bool preserveCase);
|
||||
void activated(const Utils::SearchResultItem &item);
|
||||
void replaceButtonClicked(const QString &replaceText,
|
||||
const QList<Utils::SearchResultItem> &checkedItems, bool preserveCase);
|
||||
void replaceTextChanged(const QString &replaceText);
|
||||
void searchAgainRequested();
|
||||
void canceled();
|
||||
@@ -91,7 +93,7 @@ signals:
|
||||
void navigateStateChanged();
|
||||
|
||||
private:
|
||||
void handleJumpToSearchResult(const SearchResultItem &item);
|
||||
void handleJumpToSearchResult(const Utils::SearchResultItem &item);
|
||||
void handleReplaceButton();
|
||||
void doReplace();
|
||||
void cancel();
|
||||
@@ -101,7 +103,7 @@ private:
|
||||
void continueAfterSizeWarning();
|
||||
void cancelAfterSizeWarning();
|
||||
|
||||
QList<SearchResultItem> checkedItems() const;
|
||||
QList<Utils::SearchResultItem> checkedItems() const;
|
||||
void updateMatchesFoundLabel();
|
||||
|
||||
SearchResultTreeView *m_searchResultTreeView = nullptr;
|
||||
|
||||
@@ -52,12 +52,6 @@ namespace Core {
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class Core::SearchResultItem
|
||||
\inmodule QtCreator
|
||||
\internal
|
||||
*/
|
||||
|
||||
namespace Internal {
|
||||
|
||||
class InternalScrollArea : public QScrollArea
|
||||
@@ -110,7 +104,7 @@ namespace Internal {
|
||||
QList<SearchResult *> m_searchResults;
|
||||
int m_currentIndex;
|
||||
QFont m_font;
|
||||
SearchResultColors m_colors;
|
||||
Utils::SearchResultColors m_colors;
|
||||
int m_tabWidth;
|
||||
|
||||
};
|
||||
@@ -260,14 +254,14 @@ using namespace Core::Internal;
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void Core::SearchResult::activated(const Core::SearchResultItem &item)
|
||||
\fn void Core::SearchResult::activated(const Utils::SearchResultItem &item)
|
||||
Indicates that the user activated the search result \a item by
|
||||
double-clicking it, for example.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void Core::SearchResult::replaceButtonClicked(const QString &replaceText,
|
||||
const QList<Core::SearchResultItem> &checkedItems,
|
||||
const QList<Utils::SearchResultItem> &checkedItems,
|
||||
bool preserveCase)
|
||||
|
||||
Indicates that the user initiated a text replace by selecting
|
||||
@@ -577,7 +571,8 @@ void SearchResultWindow::setFocus()
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
void SearchResultWindow::setTextEditorFont(const QFont &font, const SearchResultColors &colors)
|
||||
void SearchResultWindow::setTextEditorFont(const QFont &font,
|
||||
const Utils::SearchResultColors &colors)
|
||||
{
|
||||
d->m_font = font;
|
||||
d->m_colors = colors;
|
||||
@@ -837,7 +832,7 @@ void SearchResult::setAdditionalReplaceWidget(QWidget *widget)
|
||||
|
||||
\sa addResults()
|
||||
*/
|
||||
void SearchResult::addResult(const SearchResultItem &item)
|
||||
void SearchResult::addResult(const Utils::SearchResultItem &item)
|
||||
{
|
||||
m_widget->addResults({item}, AddOrdered);
|
||||
}
|
||||
@@ -848,7 +843,7 @@ void SearchResult::addResult(const SearchResultItem &item)
|
||||
|
||||
\sa addResult()
|
||||
*/
|
||||
void SearchResult::addResults(const QList<SearchResultItem> &items, AddMode mode)
|
||||
void SearchResult::addResults(const QList<Utils::SearchResultItem> &items, AddMode mode)
|
||||
{
|
||||
m_widget->addResults(items, mode);
|
||||
emit countChanged(m_widget->count());
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "searchresultcolor.h"
|
||||
#include "searchresultitem.h"
|
||||
|
||||
#include <coreplugin/ioutputpane.h>
|
||||
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QVariant>
|
||||
#include <QStringList>
|
||||
#include <QIcon>
|
||||
@@ -19,6 +18,7 @@ class QFont;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Core {
|
||||
|
||||
namespace Internal {
|
||||
class SearchResultWindowPrivate;
|
||||
class SearchResultWidget;
|
||||
@@ -31,7 +31,7 @@ class CORE_EXPORT SearchResultFilter : public QObject
|
||||
|
||||
public:
|
||||
virtual QWidget *createWidget() = 0;
|
||||
virtual bool matches(const SearchResultItem &item) const = 0;
|
||||
virtual bool matches(const Utils::SearchResultItem &item) const = 0;
|
||||
|
||||
signals:
|
||||
void filterChanged();
|
||||
@@ -59,8 +59,8 @@ public:
|
||||
bool isInteractive() const { return !m_finishedHandler; }
|
||||
|
||||
public slots:
|
||||
void addResult(const SearchResultItem &item);
|
||||
void addResults(const QList<SearchResultItem> &items, AddMode mode);
|
||||
void addResult(const Utils::SearchResultItem &item);
|
||||
void addResults(const QList<Utils::SearchResultItem> &items, AddMode mode);
|
||||
void setFilter(SearchResultFilter *filter); // Takes ownership
|
||||
void finishSearch(bool canceled, const QString &reason = {});
|
||||
void setTextToReplace(const QString &textToReplace);
|
||||
@@ -70,8 +70,8 @@ public slots:
|
||||
void popup();
|
||||
|
||||
signals:
|
||||
void activated(const Core::SearchResultItem &item);
|
||||
void replaceButtonClicked(const QString &replaceText, const QList<Core::SearchResultItem> &checkedItems, bool preserveCase);
|
||||
void activated(const Utils::SearchResultItem &item);
|
||||
void replaceButtonClicked(const QString &replaceText, const QList<Utils::SearchResultItem> &checkedItems, bool preserveCase);
|
||||
void replaceTextChanged(const QString &replaceText);
|
||||
void canceled();
|
||||
void paused(bool paused);
|
||||
@@ -125,7 +125,7 @@ public:
|
||||
void goToPrev() override;
|
||||
bool canNavigate() const override;
|
||||
|
||||
void setTextEditorFont(const QFont &font, const SearchResultColors &colors);
|
||||
void setTextEditorFont(const QFont &font, const Utils::SearchResultColors &colors);
|
||||
void setTabWidth(int width);
|
||||
void openNewSearchPanel();
|
||||
|
||||
|
||||
@@ -743,8 +743,7 @@ void CppFindReferences::findMacroUses(const CPlusPlus::Macro ¯o, const QStri
|
||||
setupSearch(search);
|
||||
SearchResultWindow::instance()->popup(IOutputPane::ModeSwitch | IOutputPane::WithFocus);
|
||||
|
||||
connect(search, &SearchResult::activated,
|
||||
[](const Core::SearchResultItem& item) {
|
||||
connect(search, &SearchResult::activated, search, [](const SearchResultItem &item) {
|
||||
Core::EditorManager::openEditorAtSearchResult(item);
|
||||
});
|
||||
|
||||
|
||||
@@ -9,30 +9,29 @@
|
||||
#include <cplusplus/FindUsages.h>
|
||||
#include <utils/filepath.h>
|
||||
#include <utils/link.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QObject>
|
||||
#include <QPointer>
|
||||
#include <QFuture>
|
||||
#include <QPointer>
|
||||
|
||||
#include <functional>
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QTimer)
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QTimer;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Core {
|
||||
class SearchResultItem;
|
||||
class SearchResult;
|
||||
} // namespace Core
|
||||
namespace Core { class SearchResult; }
|
||||
|
||||
namespace CppEditor {
|
||||
class CppModelManager;
|
||||
|
||||
Core::SearchResultColor::Style CPPEDITOR_EXPORT
|
||||
Utils::SearchResultColor::Style CPPEDITOR_EXPORT
|
||||
colorStyleForUsageType(CPlusPlus::Usage::Tags tags);
|
||||
|
||||
class CPPEDITOR_EXPORT CppSearchResultFilter : public Core::SearchResultFilter
|
||||
{
|
||||
QWidget *createWidget() override;
|
||||
bool matches(const Core::SearchResultItem &item) const override;
|
||||
bool matches(const Utils::SearchResultItem &item) const override;
|
||||
|
||||
void setValue(bool &member, bool value);
|
||||
|
||||
@@ -79,7 +78,7 @@ public:
|
||||
private:
|
||||
void setupSearch(Core::SearchResult *search);
|
||||
void onReplaceButtonClicked(Core::SearchResult *search, const QString &text,
|
||||
const QList<Core::SearchResultItem> &items, bool preserveCase);
|
||||
const QList<Utils::SearchResultItem> &items, bool preserveCase);
|
||||
void searchAgain(Core::SearchResult *search);
|
||||
|
||||
void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context,
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
#include "cppsourceprocessor.h"
|
||||
#include "searchsymbols.h"
|
||||
|
||||
#include <coreplugin/find/searchresultitem.h>
|
||||
#include <coreplugin/progressmanager/progressmanager.h>
|
||||
|
||||
#include <cplusplus/LookupContext.h>
|
||||
|
||||
#include <utils/async.h>
|
||||
#include <utils/filepath.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
#include <utils/stringutils.h>
|
||||
#include <utils/temporarydirectory.h>
|
||||
|
||||
@@ -54,7 +54,7 @@ class WriteTaskFileForDiagnostics
|
||||
public:
|
||||
WriteTaskFileForDiagnostics()
|
||||
{
|
||||
const QString fileName = Utils::TemporaryDirectory::masterDirectoryPath()
|
||||
const QString fileName = TemporaryDirectory::masterDirectoryPath()
|
||||
+ "/qtc_findErrorsIndexing.diagnostics."
|
||||
+ QDateTime::currentDateTime().toString("yyMMdd_HHmm") + ".tasks";
|
||||
|
||||
@@ -139,7 +139,7 @@ void indexFindErrors(QPromise<void> &promise, const ParseParams params)
|
||||
BuiltinEditorDocumentParser parser(FilePath::fromString(file));
|
||||
parser.setReleaseSourceAndAST(false);
|
||||
parser.update({CppModelManager::instance()->workingCopy(), nullptr,
|
||||
Utils::Language::Cxx, false});
|
||||
Language::Cxx, false});
|
||||
CPlusPlus::Document::Ptr document = parser.document();
|
||||
QTC_ASSERT(document, return);
|
||||
|
||||
@@ -241,7 +241,7 @@ void parse(QPromise<void> &promise, const ParseParams params)
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
void SymbolSearcher::runSearch(QPromise<Core::SearchResultItem> &promise)
|
||||
void SymbolSearcher::runSearch(QPromise<SearchResultItem> &promise)
|
||||
{
|
||||
promise.setProgressRange(0, m_snapshot.size());
|
||||
promise.setProgressValue(0);
|
||||
@@ -264,7 +264,7 @@ void SymbolSearcher::runSearch(QPromise<Core::SearchResultItem> &promise)
|
||||
if (promise.isCanceled())
|
||||
break;
|
||||
if (m_fileNames.isEmpty() || m_fileNames.contains(it.value()->filePath().path())) {
|
||||
QVector<Core::SearchResultItem> resultItems;
|
||||
QList<SearchResultItem> resultItems;
|
||||
auto filter = [&](const IndexItem::Ptr &info) -> IndexItem::VisitorResult {
|
||||
if (matcher.match(info->symbolName()).hasMatch()) {
|
||||
QString text = info->symbolName();
|
||||
@@ -277,7 +277,7 @@ void SymbolSearcher::runSearch(QPromise<Core::SearchResultItem> &promise)
|
||||
text = info->representDeclaration();
|
||||
}
|
||||
|
||||
Core::SearchResultItem item;
|
||||
SearchResultItem item;
|
||||
item.setPath(scope.split(QLatin1String("::"), Qt::SkipEmptyParts));
|
||||
item.setLineText(text);
|
||||
item.setIcon(info->icon());
|
||||
@@ -288,7 +288,7 @@ void SymbolSearcher::runSearch(QPromise<Core::SearchResultItem> &promise)
|
||||
return IndexItem::Recurse;
|
||||
};
|
||||
search(it.value())->visitAllChildren(filter);
|
||||
for (const Core::SearchResultItem &item : std::as_const(resultItems))
|
||||
for (const SearchResultItem &item : std::as_const(resultItems))
|
||||
promise.addResult(item);
|
||||
}
|
||||
++it;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
#include <QFuture>
|
||||
|
||||
namespace Core { class SearchResultItem; }
|
||||
namespace Utils { class SearchResultItem; }
|
||||
|
||||
namespace CppEditor {
|
||||
|
||||
@@ -44,7 +44,7 @@ public:
|
||||
};
|
||||
|
||||
SymbolSearcher(const SymbolSearcher::Parameters ¶meters, const QSet<QString> &fileNames);
|
||||
void runSearch(QPromise<Core::SearchResultItem> &promise);
|
||||
void runSearch(QPromise<Utils::SearchResultItem> &promise);
|
||||
|
||||
private:
|
||||
const CPlusPlus::Snapshot m_snapshot;
|
||||
|
||||
@@ -35,10 +35,10 @@ public:
|
||||
return m_symbolName == other.m_symbolName && m_scope == other.m_scope;
|
||||
}
|
||||
|
||||
static ResultDataList fromSearchResultList(const QList<Core::SearchResultItem> &entries)
|
||||
static ResultDataList fromSearchResultList(const QList<Utils::SearchResultItem> &entries)
|
||||
{
|
||||
ResultDataList result;
|
||||
for (const Core::SearchResultItem &entry : entries)
|
||||
for (const Utils::SearchResultItem &entry : entries)
|
||||
result << ResultData(entry.lineText(), entry.path().join(QLatin1String("::")));
|
||||
return result;
|
||||
}
|
||||
@@ -77,7 +77,7 @@ public:
|
||||
|
||||
const QScopedPointer<SymbolSearcher> symbolSearcher(
|
||||
new SymbolSearcher(searchParameters, QSet<QString>{testFile}));
|
||||
QFuture<Core::SearchResultItem> search
|
||||
QFuture<Utils::SearchResultItem> search
|
||||
= Utils::asyncRun(&SymbolSearcher::runSearch, symbolSearcher.data());
|
||||
search.waitForFinished();
|
||||
ResultDataList results = ResultData::fromSearchResultList(search.results());
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "searchsymbols.h"
|
||||
|
||||
#include <coreplugin/find/ifindfilter.h>
|
||||
#include <coreplugin/find/searchresultitem.h>
|
||||
#include <coreplugin/find/searchresultwindow.h>
|
||||
|
||||
#include <QFutureWatcher>
|
||||
@@ -16,6 +15,7 @@
|
||||
#include <QRadioButton>
|
||||
|
||||
namespace Core { class SearchResult; }
|
||||
namespace Utils { class SearchResultItem; }
|
||||
|
||||
namespace CppEditor {
|
||||
class CppModelManager;
|
||||
@@ -52,10 +52,10 @@ signals:
|
||||
void symbolsToSearchChanged();
|
||||
|
||||
private:
|
||||
void openEditor(const Core::SearchResultItem &item);
|
||||
void openEditor(const Utils::SearchResultItem &item);
|
||||
|
||||
void addResults(QFutureWatcher<Core::SearchResultItem> *watcher, int begin, int end);
|
||||
void finish(QFutureWatcher<Core::SearchResultItem> *watcher);
|
||||
void addResults(QFutureWatcher<Utils::SearchResultItem> *watcher, int begin, int end);
|
||||
void finish(QFutureWatcher<Utils::SearchResultItem> *watcher);
|
||||
void cancel(Core::SearchResult *search);
|
||||
void setPaused(Core::SearchResult *search, bool paused);
|
||||
void onTaskStarted(Utils::Id type);
|
||||
@@ -67,7 +67,7 @@ private:
|
||||
|
||||
CppModelManager *m_manager;
|
||||
bool m_enabled;
|
||||
QMap<QFutureWatcher<Core::SearchResultItem> *, QPointer<Core::SearchResult> > m_watchers;
|
||||
QMap<QFutureWatcher<Utils::SearchResultItem> *, QPointer<Core::SearchResult> > m_watchers;
|
||||
QPointer<Core::SearchResult> m_currentSearch;
|
||||
SearchSymbols::SymbolTypes m_symbolsToSearch;
|
||||
SearchScope m_scope;
|
||||
|
||||
@@ -5,9 +5,14 @@
|
||||
|
||||
#include <texteditor/basefilefind.h>
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QCheckBox);
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QCheckBox;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Utils { class FancyLineEdit; }
|
||||
namespace Utils {
|
||||
class FancyLineEdit;
|
||||
class SearchResultItem;
|
||||
}
|
||||
|
||||
namespace Git::Internal {
|
||||
|
||||
@@ -28,7 +33,7 @@ public:
|
||||
QFuture<Utils::FileSearchResultList> executeSearch(
|
||||
const TextEditor::FileFindParameters ¶meters,
|
||||
TextEditor::BaseFileFind *baseFileFind) override;
|
||||
Core::IEditor *openEditor(const Core::SearchResultItem &item,
|
||||
Core::IEditor *openEditor(const Utils::SearchResultItem &item,
|
||||
const TextEditor::FileFindParameters ¶meters) override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -193,7 +193,7 @@ bool SymbolSupport::supportsFindUsages(TextEditor::TextDocument *document) const
|
||||
|
||||
struct ItemData
|
||||
{
|
||||
Core::Search::TextRange range;
|
||||
Utils::Search::TextRange range;
|
||||
QVariant userData;
|
||||
};
|
||||
|
||||
@@ -216,12 +216,12 @@ QStringList SymbolSupport::getFileContents(const Utils::FilePath &filePath)
|
||||
return fileContent.split("\n");
|
||||
}
|
||||
|
||||
QList<Core::SearchResultItem> generateSearchResultItems(
|
||||
QList<Utils::SearchResultItem> generateSearchResultItems(
|
||||
const QMap<Utils::FilePath, QList<ItemData>> &rangesInDocument,
|
||||
Core::SearchResult *search = nullptr,
|
||||
bool limitToProjects = false)
|
||||
{
|
||||
QList<Core::SearchResultItem> result;
|
||||
QList<Utils::SearchResultItem> result;
|
||||
const bool renaming = search && search->supportsReplace();
|
||||
QString oldSymbolName;
|
||||
QVariantList userData;
|
||||
@@ -233,7 +233,7 @@ QList<Core::SearchResultItem> generateSearchResultItems(
|
||||
for (auto it = rangesInDocument.begin(); it != rangesInDocument.end(); ++it) {
|
||||
const Utils::FilePath &filePath = it.key();
|
||||
|
||||
Core::SearchResultItem item;
|
||||
Utils::SearchResultItem item;
|
||||
item.setFilePath(filePath);
|
||||
item.setUseTextEditorFont(true);
|
||||
if (renaming && limitToProjects) {
|
||||
@@ -264,7 +264,7 @@ QList<Core::SearchResultItem> generateSearchResultItems(
|
||||
return result;
|
||||
}
|
||||
|
||||
QList<Core::SearchResultItem> generateSearchResultItems(
|
||||
QList<Utils::SearchResultItem> generateSearchResultItems(
|
||||
const LanguageClientArray<Location> &locations, const DocumentUri::PathMapper &pathMapper)
|
||||
{
|
||||
if (locations.isNull())
|
||||
@@ -291,7 +291,7 @@ void SymbolSupport::handleFindReferencesResponse(const FindReferencesRequest::Re
|
||||
Tr::tr("Find References with %1 for:").arg(m_client->name()), "", wordUnderCursor);
|
||||
search->addResults(generateSearchResultItems(*result, m_client->hostPathMapper()),
|
||||
Core::SearchResult::AddOrdered);
|
||||
connect(search, &Core::SearchResult::activated, [](const Core::SearchResultItem &item) {
|
||||
connect(search, &Core::SearchResult::activated, [](const Utils::SearchResultItem &item) {
|
||||
Core::EditorManager::openEditorAtSearchResult(item);
|
||||
});
|
||||
search->finishSearch(false);
|
||||
@@ -463,7 +463,7 @@ void SymbolSupport::requestRename(const TextDocumentPositionParams &positionPara
|
||||
search->popup();
|
||||
}
|
||||
|
||||
QList<Core::SearchResultItem> generateReplaceItems(const WorkspaceEdit &edits,
|
||||
QList<Utils::SearchResultItem> generateReplaceItems(const WorkspaceEdit &edits,
|
||||
Core::SearchResult *search,
|
||||
bool limitToProjects,
|
||||
const DocumentUri::PathMapper &pathMapper)
|
||||
@@ -506,7 +506,7 @@ Core::SearchResult *SymbolSupport::createSearch(const TextDocumentPositionParams
|
||||
if (callback)
|
||||
search->makeNonInteractive(callback);
|
||||
|
||||
connect(search, &Core::SearchResult::activated, [](const Core::SearchResultItem &item) {
|
||||
connect(search, &Core::SearchResult::activated, [](const Utils::SearchResultItem &item) {
|
||||
Core::EditorManager::openEditorAtSearchResult(item);
|
||||
});
|
||||
connect(search, &Core::SearchResult::replaceTextChanged, this, [this, search, positionParams]() {
|
||||
@@ -524,7 +524,7 @@ Core::SearchResult *SymbolSupport::createSearch(const TextDocumentPositionParams
|
||||
|
||||
connect(search, &Core::SearchResult::replaceButtonClicked, this,
|
||||
[this, search, resetConnection](const QString & /*replaceText*/,
|
||||
const QList<Core::SearchResultItem> &checkedItems) {
|
||||
const QList<Utils::SearchResultItem> &checkedItems) {
|
||||
applyRename(checkedItems, search);
|
||||
disconnect(resetConnection);
|
||||
});
|
||||
@@ -571,12 +571,12 @@ void SymbolSupport::handleRenameResponse(Core::SearchResult *search,
|
||||
}
|
||||
}
|
||||
|
||||
void SymbolSupport::applyRename(const QList<Core::SearchResultItem> &checkedItems,
|
||||
void SymbolSupport::applyRename(const QList<Utils::SearchResultItem> &checkedItems,
|
||||
Core::SearchResult *search)
|
||||
{
|
||||
QSet<Utils::FilePath> affectedNonOpenFilePaths;
|
||||
QMap<Utils::FilePath, QList<TextEdit>> editsForDocuments;
|
||||
for (const Core::SearchResultItem &item : checkedItems) {
|
||||
for (const Utils::SearchResultItem &item : checkedItems) {
|
||||
const auto filePath = Utils::FilePath::fromString(item.path().value(0));
|
||||
if (!m_client->documentForFilePath(filePath))
|
||||
affectedNonOpenFilePaths << filePath;
|
||||
@@ -616,12 +616,12 @@ QString SymbolSupport::derivePlaceholder(const QString &oldSymbol, const QString
|
||||
return m_defaultSymbolMapper ? m_defaultSymbolMapper(oldSymbol) : oldSymbol;
|
||||
}
|
||||
|
||||
Core::Search::TextRange SymbolSupport::convertRange(const Range &range)
|
||||
Utils::Search::TextRange SymbolSupport::convertRange(const Range &range)
|
||||
{
|
||||
auto convertPosition = [](const Position &pos) {
|
||||
return Core::Search::TextPosition(pos.line() + 1, pos.character());
|
||||
const auto convertPosition = [](const Position &pos) {
|
||||
return Utils::Search::TextPosition{pos.line() + 1, pos.character()};
|
||||
};
|
||||
return Core::Search::TextRange(convertPosition(range.start()), convertPosition(range.end()));
|
||||
return {convertPosition(range.start()), convertPosition(range.end())};
|
||||
}
|
||||
|
||||
void SymbolSupport::setDefaultRenamingSymbolMapper(const SymbolMapper &mapper)
|
||||
|
||||
@@ -5,18 +5,15 @@
|
||||
|
||||
#include "languageclient_global.h"
|
||||
|
||||
#include <coreplugin/find/searchresultitem.h>
|
||||
#include <texteditor/textdocument.h>
|
||||
|
||||
#include <languageserverprotocol/languagefeatures.h>
|
||||
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <functional>
|
||||
|
||||
namespace Core {
|
||||
class SearchResult;
|
||||
class SearchResultItem;
|
||||
}
|
||||
|
||||
namespace Core { class SearchResult; }
|
||||
namespace LanguageServerProtocol { class MessageId; }
|
||||
|
||||
namespace LanguageClient {
|
||||
@@ -46,7 +43,7 @@ public:
|
||||
const std::function<void()> &callback = {},
|
||||
bool preferLowerCaseFileNames = true);
|
||||
|
||||
static Core::Search::TextRange convertRange(const LanguageServerProtocol::Range &range);
|
||||
static Utils::Search::TextRange convertRange(const LanguageServerProtocol::Range &range);
|
||||
static QStringList getFileContents(const Utils::FilePath &filePath);
|
||||
|
||||
using SymbolMapper = std::function<QString(const QString &)>;
|
||||
@@ -76,7 +73,7 @@ private:
|
||||
const std::function<void()> &callback, bool preferLowerCaseFileNames);
|
||||
void handleRenameResponse(Core::SearchResult *search,
|
||||
const LanguageServerProtocol::RenameRequest::Response &response);
|
||||
void applyRename(const QList<Core::SearchResultItem> &checkedItems, Core::SearchResult *search);
|
||||
void applyRename(const QList<Utils::SearchResultItem> &checkedItems, Core::SearchResult *search);
|
||||
QString derivePlaceholder(const QString &oldSymbol, const QString &newSymbol);
|
||||
|
||||
Client *m_client = nullptr;
|
||||
|
||||
@@ -992,7 +992,7 @@ void FindReferences::displayResults(int first, int last)
|
||||
this, &FindReferences::onReplaceButtonClicked);
|
||||
}
|
||||
connect(m_currentSearch.data(), &SearchResult::activated,
|
||||
[](const Core::SearchResultItem& item) {
|
||||
[](const Utils::SearchResultItem& item) {
|
||||
Core::EditorManager::openEditorAtSearchResult(item);
|
||||
});
|
||||
connect(m_currentSearch.data(), &SearchResult::canceled, this, &FindReferences::cancel);
|
||||
@@ -1013,7 +1013,7 @@ void FindReferences::displayResults(int first, int last)
|
||||
}
|
||||
for (int index = first; index != last; ++index) {
|
||||
Usage result = m_watcher.future().resultAt(index);
|
||||
SearchResultItem item;
|
||||
Utils::SearchResultItem item;
|
||||
item.setFilePath(result.path);
|
||||
item.setLineText(result.lineText);
|
||||
item.setMainRange(result.line, result.col, result.len);
|
||||
@@ -1041,7 +1041,8 @@ void FindReferences::setPaused(bool paused)
|
||||
m_watcher.setPaused(paused);
|
||||
}
|
||||
|
||||
void FindReferences::onReplaceButtonClicked(const QString &text, const QList<SearchResultItem> &items, bool preserveCase)
|
||||
void FindReferences::onReplaceButtonClicked(const QString &text,
|
||||
const QList<Utils::SearchResultItem> &items, bool preserveCase)
|
||||
{
|
||||
const Utils::FilePaths filePaths = TextEditor::BaseFileFind::replaceAll(text,
|
||||
items,
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <utils/filepath.h>
|
||||
#include <utils/futuresynchronizer.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QObject>
|
||||
#include <QFutureWatcher>
|
||||
@@ -14,10 +15,7 @@
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QTimer)
|
||||
|
||||
namespace Core {
|
||||
class SearchResultItem;
|
||||
class SearchResult;
|
||||
} // namespace Core
|
||||
namespace Core { class SearchResult; }
|
||||
|
||||
namespace QmlJSEditor {
|
||||
|
||||
@@ -64,7 +62,8 @@ private:
|
||||
void searchFinished();
|
||||
void cancel();
|
||||
void setPaused(bool paused);
|
||||
void onReplaceButtonClicked(const QString &text, const QList<Core::SearchResultItem> &items, bool preserveCase);
|
||||
void onReplaceButtonClicked(const QString &text, const QList<Utils::SearchResultItem> &items,
|
||||
bool preserveCase);
|
||||
|
||||
QPointer<Core::SearchResult> m_currentSearch;
|
||||
QFutureWatcher<Usage> m_watcher;
|
||||
|
||||
@@ -33,7 +33,7 @@ public:
|
||||
void writeSettings(QSettings *settings) const override;
|
||||
QFuture<Utils::FileSearchResultList> executeSearch(
|
||||
const TextEditor::FileFindParameters ¶meters, TextEditor::BaseFileFind *) override;
|
||||
Core::IEditor *openEditor(const Core::SearchResultItem &item,
|
||||
Core::IEditor *openEditor(const Utils::SearchResultItem &item,
|
||||
const TextEditor::FileFindParameters ¶meters) override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
QVariant parameters() const override { return {}; }
|
||||
void readSettings(QSettings * /*settings*/) override {}
|
||||
void writeSettings(QSettings * /*settings*/) const override {}
|
||||
QFuture<Utils::FileSearchResultList> executeSearch(
|
||||
QFuture<FileSearchResultList> executeSearch(
|
||||
const TextEditor::FileFindParameters ¶meters,
|
||||
BaseFileFind *baseFileFind) override
|
||||
{
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
TextDocument::openedTextDocumentContents());
|
||||
|
||||
}
|
||||
Core::IEditor *openEditor(const Core::SearchResultItem &/*item*/,
|
||||
Core::IEditor *openEditor(const SearchResultItem &/*item*/,
|
||||
const TextEditor::FileFindParameters &/*parameters*/) override
|
||||
{
|
||||
return nullptr;
|
||||
|
||||
@@ -4,20 +4,24 @@
|
||||
#pragma once
|
||||
|
||||
#include "texteditor_global.h"
|
||||
#include <utils/filesearch.h>
|
||||
|
||||
#include <coreplugin/find/ifindfilter.h>
|
||||
#include <coreplugin/find/searchresultwindow.h>
|
||||
|
||||
#include <utils/filesearch.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
#include <QFuture>
|
||||
|
||||
namespace Utils { class FileIterator; }
|
||||
namespace Core {
|
||||
class IEditor;
|
||||
class SearchResult;
|
||||
class SearchResultItem;
|
||||
} // namespace Core
|
||||
|
||||
namespace Utils {
|
||||
class FileIterator;
|
||||
}
|
||||
|
||||
namespace TextEditor {
|
||||
|
||||
namespace Internal {
|
||||
@@ -54,7 +58,7 @@ public:
|
||||
virtual void writeSettings(QSettings *settings) const = 0;
|
||||
virtual QFuture<Utils::FileSearchResultList> executeSearch(
|
||||
const FileFindParameters ¶meters, BaseFileFind *baseFileFind) = 0;
|
||||
virtual Core::IEditor *openEditor(const Core::SearchResultItem &item,
|
||||
virtual Core::IEditor *openEditor(const Utils::SearchResultItem &item,
|
||||
const FileFindParameters ¶meters) = 0;
|
||||
bool isEnabled() const;
|
||||
void setEnabled(bool enabled);
|
||||
@@ -82,7 +86,7 @@ public:
|
||||
|
||||
/* returns the list of unique files that were passed in items */
|
||||
static Utils::FilePaths replaceAll(const QString &txt,
|
||||
const QList<Core::SearchResultItem> &items,
|
||||
const QList<Utils::SearchResultItem> &items,
|
||||
bool preserveCase = false);
|
||||
virtual Utils::FileIterator *files(const QStringList &nameFilters,
|
||||
const QStringList &exclusionFilters,
|
||||
@@ -111,9 +115,9 @@ signals:
|
||||
void currentSearchEngineChanged();
|
||||
|
||||
private:
|
||||
void openEditor(Core::SearchResult *result, const Core::SearchResultItem &item);
|
||||
void openEditor(Core::SearchResult *result, const Utils::SearchResultItem &item);
|
||||
void doReplace(const QString &txt,
|
||||
const QList<Core::SearchResultItem> &items,
|
||||
const QList<Utils::SearchResultItem> &items,
|
||||
bool preserveCase);
|
||||
void hideHighlightAll(bool visible);
|
||||
void searchAgain(Core::SearchResult *search);
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <coreplugin/find/searchresultitem.h>
|
||||
#include <utils/searchresultitem.h>
|
||||
|
||||
namespace Core {
|
||||
namespace Utils {
|
||||
namespace Search {
|
||||
|
||||
inline
|
||||
|
||||
Reference in New Issue
Block a user