LanguageClient: unify client container

Change-Id: I17b5e7ca4999cd5a9ca8e79577f29854082b6c6b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2022-03-14 08:36:37 +01:00
parent f69de8b5bc
commit 5924268568
7 changed files with 23 additions and 23 deletions

View File

@@ -1727,7 +1727,7 @@ QString ClangdClient::displayNameFromDocumentSymbol(SymbolKind kind, const QStri
void ClangdClient::handleUiHeaderChange(const QString &fileName) void ClangdClient::handleUiHeaderChange(const QString &fileName)
{ {
const QRegularExpression includeRex("#include.*" + fileName + R"([>"])"); const QRegularExpression includeRex("#include.*" + fileName + R"([>"])");
const QVector<Client *> &allClients = LanguageClientManager::clients(); const QList<Client *> &allClients = LanguageClientManager::clients();
for (Client * const client : allClients) { for (Client * const client : allClients) {
if (!client->reachable() || !qobject_cast<ClangdClient *>(client)) if (!client->reachable() || !qobject_cast<ClangdClient *>(client))
continue; continue;

View File

@@ -157,7 +157,7 @@ ClangGlobalSymbolFilter::~ClangGlobalSymbolFilter()
void ClangGlobalSymbolFilter::prepareSearch(const QString &entry) void ClangGlobalSymbolFilter::prepareSearch(const QString &entry)
{ {
m_cppFilter->prepareSearch(entry); m_cppFilter->prepareSearch(entry);
QVector<LanguageClient::Client *> clients; QList<LanguageClient::Client *> clients;
for (ProjectExplorer::Project * const project : ProjectExplorer::SessionManager::projects()) { for (ProjectExplorer::Project * const project : ProjectExplorer::SessionManager::projects()) {
LanguageClient::Client * const client LanguageClient::Client * const client
= ClangModelManagerSupport::instance()->clientForProject(project); = ClangModelManagerSupport::instance()->clientForProject(project);

View File

@@ -189,7 +189,7 @@ Client *LanguageClientManager::startClient(BaseSettings *setting, ProjectExplore
return client; return client;
} }
QVector<Client *> LanguageClientManager::clients() QList<Client *> LanguageClientManager::clients()
{ {
QTC_ASSERT(managerInstance, return {}); QTC_ASSERT(managerInstance, return {});
return managerInstance->m_clients; return managerInstance->m_clients;
@@ -233,7 +233,7 @@ void LanguageClientManager::deleteClient(Client *client)
qCDebug(Log) << "delete client: " << client->name() << client; qCDebug(Log) << "delete client: " << client->name() << client;
client->disconnect(managerInstance); client->disconnect(managerInstance);
managerInstance->m_clients.removeAll(client); managerInstance->m_clients.removeAll(client);
for (QVector<Client *> &clients : managerInstance->m_clientsForSetting) for (QList<Client *> &clients : managerInstance->m_clientsForSetting)
clients.removeAll(client); clients.removeAll(client);
if (managerInstance->m_shuttingDown) { if (managerInstance->m_shuttingDown) {
delete client; delete client;
@@ -272,7 +272,7 @@ QList<Client *> LanguageClientManager::clientsSupportingDocument(const TextEdito
QTC_ASSERT(doc, return {};); QTC_ASSERT(doc, return {};);
return Utils::filtered(managerInstance->reachableClients(), [doc](Client *client) { return Utils::filtered(managerInstance->reachableClients(), [doc](Client *client) {
return client->isSupportedDocument(doc); return client->isSupportedDocument(doc);
}).toList(); });
} }
void LanguageClientManager::applySettings() void LanguageClientManager::applySettings()
@@ -286,7 +286,7 @@ void LanguageClientManager::applySettings()
for (BaseSettings *setting : restarts) { for (BaseSettings *setting : restarts) {
QList<TextEditor::TextDocument *> documents; QList<TextEditor::TextDocument *> documents;
const QVector<Client *> currentClients = clientForSetting(setting); const QList<Client *> currentClients = clientForSetting(setting);
for (Client *client : currentClients) { for (Client *client : currentClients) {
documents << managerInstance->m_clientForDocument.keys(client); documents << managerInstance->m_clientForDocument.keys(client);
shutdownClient(client); shutdownClient(client);
@@ -367,7 +367,7 @@ void LanguageClientManager::enableClientSettings(const QString &settingsId)
managerInstance->applySettings(); managerInstance->applySettings();
} }
QVector<Client *> LanguageClientManager::clientForSetting(const BaseSettings *setting) QList<Client *> LanguageClientManager::clientForSetting(const BaseSettings *setting)
{ {
QTC_ASSERT(managerInstance, return {}); QTC_ASSERT(managerInstance, return {});
auto instance = managerInstance; auto instance = managerInstance;
@@ -414,7 +414,7 @@ const QList<Client *> LanguageClientManager::clientsForProject(
{ {
return Utils::filtered(managerInstance->m_clients, [project](const Client *c) { return Utils::filtered(managerInstance->m_clients, [project](const Client *c) {
return c->project() == project; return c->project() == project;
}).toList(); });
} }
void LanguageClientManager::openDocumentWithClient(TextEditor::TextDocument *document, Client *client) void LanguageClientManager::openDocumentWithClient(TextEditor::TextDocument *document, Client *client)
@@ -455,7 +455,7 @@ void LanguageClientManager::showInspector()
inspectorWidget->show(); inspectorWidget->show();
} }
QVector<Client *> LanguageClientManager::reachableClients() QList<Client *> LanguageClientManager::reachableClients()
{ {
return Utils::filtered(m_clients, &Client::reachable); return Utils::filtered(m_clients, &Client::reachable);
} }
@@ -506,7 +506,7 @@ void LanguageClientManager::documentOpened(Core::IDocument *document)
for (BaseSettings *setting : settings) { for (BaseSettings *setting : settings) {
if (setting->isValid() && setting->m_enabled if (setting->isValid() && setting->m_enabled
&& setting->m_languageFilter.isSupported(document)) { && setting->m_languageFilter.isSupported(document)) {
QVector<Client *> clients = clientForSetting(setting); QList<Client *> clients = clientForSetting(setting);
if (setting->m_startBehavior == BaseSettings::RequiresProject) { if (setting->m_startBehavior == BaseSettings::RequiresProject) {
const Utils::FilePath &filePath = document->filePath(); const Utils::FilePath &filePath = document->filePath();
for (ProjectExplorer::Project *project : for (ProjectExplorer::Project *project :
@@ -548,7 +548,7 @@ void LanguageClientManager::documentClosed(Core::IDocument *document)
void LanguageClientManager::documentContentsSaved(Core::IDocument *document) void LanguageClientManager::documentContentsSaved(Core::IDocument *document)
{ {
if (auto textDocument = qobject_cast<TextEditor::TextDocument *>(document)) { if (auto textDocument = qobject_cast<TextEditor::TextDocument *>(document)) {
const QVector<Client *> &clients = reachableClients(); const QList<Client *> &clients = reachableClients();
for (Client *client : clients) for (Client *client : clients)
client->documentContentsSaved(textDocument); client->documentContentsSaved(textDocument);
} }
@@ -557,7 +557,7 @@ void LanguageClientManager::documentContentsSaved(Core::IDocument *document)
void LanguageClientManager::documentWillSave(Core::IDocument *document) void LanguageClientManager::documentWillSave(Core::IDocument *document)
{ {
if (auto textDocument = qobject_cast<TextEditor::TextDocument *>(document)) { if (auto textDocument = qobject_cast<TextEditor::TextDocument *>(document)) {
const QVector<Client *> &clients = reachableClients(); const QList<Client *> &clients = reachableClients();
for (Client *client : clients) for (Client *client : clients)
client->documentWillSave(textDocument); client->documentWillSave(textDocument);
} }
@@ -598,7 +598,7 @@ void LanguageClientManager::projectAdded(ProjectExplorer::Project *project)
connect(project, &ProjectExplorer::Project::fileListChanged, this, [this, project]() { connect(project, &ProjectExplorer::Project::fileListChanged, this, [this, project]() {
updateProject(project); updateProject(project);
}); });
const QVector<Client *> &clients = reachableClients(); const QList<Client *> &clients = reachableClients();
for (Client *client : clients) for (Client *client : clients)
client->projectOpened(project); client->projectOpened(project);
} }

View File

@@ -62,7 +62,7 @@ public:
static void clientStarted(Client *client); static void clientStarted(Client *client);
static void clientFinished(Client *client); static void clientFinished(Client *client);
static Client *startClient(BaseSettings *setting, ProjectExplorer::Project *project = nullptr); static Client *startClient(BaseSettings *setting, ProjectExplorer::Project *project = nullptr);
static QVector<Client *> clients(); static QList<Client *> clients();
static void addClient(Client *client); static void addClient(Client *client);
static void addExclusiveRequest(const LanguageServerProtocol::MessageId &id, Client *client); static void addExclusiveRequest(const LanguageServerProtocol::MessageId &id, Client *client);
@@ -81,7 +81,7 @@ public:
static QList<BaseSettings *> currentSettings(); static QList<BaseSettings *> currentSettings();
static void registerClientSettings(BaseSettings *settings); static void registerClientSettings(BaseSettings *settings);
static void enableClientSettings(const QString &settingsId); static void enableClientSettings(const QString &settingsId);
static QVector<Client *> clientForSetting(const BaseSettings *setting); static QList<Client *> clientForSetting(const BaseSettings *setting);
static const BaseSettings *settingForClient(Client *setting); static const BaseSettings *settingForClient(Client *setting);
static Client *clientForDocument(TextEditor::TextDocument *document); static Client *clientForDocument(TextEditor::TextDocument *document);
static Client *clientForFilePath(const Utils::FilePath &filePath); static Client *clientForFilePath(const Utils::FilePath &filePath);
@@ -117,12 +117,12 @@ private:
void updateProject(ProjectExplorer::Project *project); void updateProject(ProjectExplorer::Project *project);
void projectAdded(ProjectExplorer::Project *project); void projectAdded(ProjectExplorer::Project *project);
QVector<Client *> reachableClients(); QList<Client *> reachableClients();
bool m_shuttingDown = false; bool m_shuttingDown = false;
QVector<Client *> m_clients; QList<Client *> m_clients;
QList<BaseSettings *> m_currentSettings; // owned QList<BaseSettings *> m_currentSettings; // owned
QMap<QString, QVector<Client *>> m_clientsForSetting; QMap<QString, QList<Client *>> m_clientsForSetting;
QHash<TextEditor::TextDocument *, QPointer<Client>> m_clientForDocument; QHash<TextEditor::TextDocument *, QPointer<Client>> m_clientForDocument;
QHash<LanguageServerProtocol::MessageId, QList<Client *>> m_exclusiveRequests; QHash<LanguageServerProtocol::MessageId, QList<Client *>> m_exclusiveRequests;
DocumentLocatorFilter m_currentDocumentLocatorFilter; DocumentLocatorFilter m_currentDocumentLocatorFilter;

View File

@@ -253,13 +253,13 @@ void WorkspaceLocatorFilter::prepareSearch(const QString &entry)
prepareSearch(entry, LanguageClientManager::clients(), false); prepareSearch(entry, LanguageClientManager::clients(), false);
} }
void WorkspaceLocatorFilter::prepareSearch(const QString &entry, const QVector<Client *> &clients) void WorkspaceLocatorFilter::prepareSearch(const QString &entry, const QList<Client *> &clients)
{ {
prepareSearch(entry, clients, true); prepareSearch(entry, clients, true);
} }
void WorkspaceLocatorFilter::prepareSearch(const QString &entry, void WorkspaceLocatorFilter::prepareSearch(const QString &entry,
const QVector<Client *> &clients, const QList<Client *> &clients,
bool force) bool force)
{ {
m_pendingRequests.clear(); m_pendingRequests.clear();

View File

@@ -100,7 +100,7 @@ public:
/// request workspace symbols for all clients with enabled locator /// request workspace symbols for all clients with enabled locator
void prepareSearch(const QString &entry) override; void prepareSearch(const QString &entry) override;
/// force request workspace symbols for all given clients /// force request workspace symbols for all given clients
void prepareSearch(const QString &entry, const QVector<Client *> &clients); void prepareSearch(const QString &entry, const QList<Client *> &clients);
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future, QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
const QString &entry) override; const QString &entry) override;
void accept(const Core::LocatorFilterEntry &selection, void accept(const Core::LocatorFilterEntry &selection,
@@ -117,7 +117,7 @@ protected:
void setMaxResultCount(qint64 limit) { m_maxResultCount = limit; } void setMaxResultCount(qint64 limit) { m_maxResultCount = limit; }
private: private:
void prepareSearch(const QString &entry, const QVector<Client *> &clients, bool force); void prepareSearch(const QString &entry, const QList<Client *> &clients, bool force);
void handleResponse(Client *client, void handleResponse(Client *client,
const LanguageServerProtocol::WorkspaceSymbolRequest::Response &response); const LanguageServerProtocol::WorkspaceSymbolRequest::Response &response);

View File

@@ -442,7 +442,7 @@ bool PyLSSettings::applyFromSettingsWidget(QWidget *widget)
if (m_configuration != pylswidget->configuration()) { if (m_configuration != pylswidget->configuration()) {
m_configuration = pylswidget->configuration(); m_configuration = pylswidget->configuration();
if (!changed) { // if only the settings configuration changed just send an update if (!changed) { // if only the settings configuration changed just send an update
const QVector<Client *> clients = LanguageClientManager::clientForSetting(this); const QList<Client *> clients = LanguageClientManager::clientForSetting(this);
for (Client *client : clients) for (Client *client : clients)
client->updateConfiguration(configuration()); client->updateConfiguration(configuration());
} }