summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/clangcodemodel/clangmodelmanagersupport.cpp16
-rw-r--r--src/plugins/clangcodemodel/clangmodelmanagersupport.h4
-rw-r--r--src/plugins/clangcodemodel/test/clangdtests.cpp22
-rw-r--r--src/plugins/languageclient/languageclientmanager.cpp1
-rw-r--r--src/plugins/languageclient/languageclientmanager.h1
5 files changed, 17 insertions, 27 deletions
diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp
index f6a9d112f0..fb93e56fc7 100644
--- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp
+++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp
@@ -192,7 +192,7 @@ ClangModelManagerSupport::ClangModelManagerSupport()
connect(modelManager, &CppModelManager::fallbackProjectPartUpdated, this, [this] {
if (ClangdClient * const fallbackClient = clientForProject(nullptr)) {
LanguageClientManager::shutdownClient(fallbackClient);
- claimNonProjectSources(createClient(nullptr, {}));
+ claimNonProjectSources(new ClangdClient(nullptr, {}));
}
});
@@ -205,7 +205,7 @@ ClangModelManagerSupport::ClangModelManagerSupport()
this, &ClangModelManagerSupport::onClangdSettingsChanged);
if (CppEditor::ClangdSettings::instance().useClangd())
- createClient(nullptr, {});
+ new ClangdClient(nullptr, {});
m_generatorSynchronizer.setCancelOnWait(true);
new ClangdQuickFixFactory(); // memory managed by CppEditor::g_cppQuickFixFactories
@@ -388,7 +388,7 @@ void ClangModelManagerSupport::updateLanguageClient(
}
if (Client * const oldClient = clientForProject(project))
LanguageClientManager::shutdownClient(oldClient);
- ClangdClient * const client = createClient(project, jsonDbDir);
+ ClangdClient * const client = new ClangdClient(project, jsonDbDir);
connect(client, &Client::initialized, this, [this, client, project, projectInfo, jsonDbDir] {
using namespace ProjectExplorer;
if (!SessionManager::hasProject(project))
@@ -521,14 +521,6 @@ ClangdClient *ClangModelManagerSupport::clientForFile(const Utils::FilePath &fil
return qobject_cast<ClangdClient *>(LanguageClientManager::clientForFilePath(file));
}
-ClangdClient *ClangModelManagerSupport::createClient(ProjectExplorer::Project *project,
- const Utils::FilePath &jsonDbDir)
-{
- const auto client = new ClangdClient(project, jsonDbDir);
- emit createdClient(client);
- return client;
-}
-
void ClangModelManagerSupport::claimNonProjectSources(ClangdClient *client)
{
if (!client)
@@ -780,7 +772,7 @@ void ClangModelManagerSupport::onClangdSettingsChanged()
ClangdClient * const fallbackClient = clientForProject(nullptr);
const ClangdSettings &settings = ClangdSettings::instance();
const auto startNewFallbackClient = [this] {
- claimNonProjectSources(createClient(nullptr, {}));
+ claimNonProjectSources(new ClangdClient(nullptr, {}));
};
if (!fallbackClient) {
if (settings.useClangd())
diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.h b/src/plugins/clangcodemodel/clangmodelmanagersupport.h
index e9cdfb108a..b2d09341c8 100644
--- a/src/plugins/clangcodemodel/clangmodelmanagersupport.h
+++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.h
@@ -71,9 +71,6 @@ public:
static ClangModelManagerSupport *instance();
-signals:
- void createdClient(ClangdClient *client);
-
private:
void followSymbol(const CppEditor::CursorInEditor &data,
const Utils::LinkHandler &processLinkCallback, bool resolveTarget,
@@ -110,7 +107,6 @@ private:
void updateLanguageClient(ProjectExplorer::Project *project,
const CppEditor::ProjectInfo::ConstPtr &projectInfo);
- ClangdClient *createClient(ProjectExplorer::Project *project, const Utils::FilePath &jsonDbDir);
void claimNonProjectSources(ClangdClient *client);
void watchForExternalChanges();
void watchForInternalChanges();
diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp
index edfc0717b5..661c561a12 100644
--- a/src/plugins/clangcodemodel/test/clangdtests.cpp
+++ b/src/plugins/clangcodemodel/test/clangdtests.cpp
@@ -61,6 +61,7 @@
using namespace CPlusPlus;
using namespace Core;
using namespace CppEditor::Tests;
+using namespace LanguageClient;
using namespace ProjectExplorer;
using namespace TextEditor;
@@ -104,12 +105,11 @@ void ClangdTest::waitForNewClient(bool withIndex)
// Setting up the project should result in a clangd client being created.
// Wait until that has happened.
m_client = nullptr;
- const auto modelManagerSupport = ClangModelManagerSupport::instance();
- m_client = modelManagerSupport->clientForProject(project());
+ m_client = ClangModelManagerSupport::clientForProject(project());
if (!m_client) {
- QVERIFY(waitForSignalOrTimeout(modelManagerSupport,
- &ClangModelManagerSupport::createdClient, timeOutInMs()));
- m_client = modelManagerSupport->clientForProject(m_project);
+ QVERIFY(waitForSignalOrTimeout(LanguageClientManager::instance(),
+ &LanguageClientManager::clientAdded, timeOutInMs()));
+ m_client = ClangModelManagerSupport::clientForProject(project());
}
QVERIFY(m_client);
m_client->enableTesting();
@@ -1878,8 +1878,8 @@ void ClangdTestCompletion::testCompleteAfterProjectChange()
QString saveError;
QVERIFY2(proFileEditor->document()->save(&saveError), qPrintable(saveError));
QVERIFY(waitForSignalOrTimeout(project(), &Project::anyParsingFinished, timeOutInMs()));
- QVERIFY(waitForSignalOrTimeout(LanguageClient::LanguageClientManager::instance(),
- &LanguageClient::LanguageClientManager::clientRemoved,
+ QVERIFY(waitForSignalOrTimeout(LanguageClientManager::instance(),
+ &LanguageClientManager::clientRemoved,
timeOutInMs()));
// Waiting for the index will cause highlighting info collection to start too late,
@@ -2026,8 +2026,8 @@ void ClangdTestExternalChanges::test()
header.close();
ClangdClient * const oldClient = client();
QVERIFY(oldClient);
- waitForSignalOrTimeout(ClangModelManagerSupport::instance(),
- &ClangModelManagerSupport::createdClient, timeOutInMs());
+ waitForSignalOrTimeout(LanguageClientManager::instance(),
+ &LanguageClientManager::clientAdded, timeOutInMs());
QCOMPARE(client(), oldClient);
QCOMPARE(client(), ClangModelManagerSupport::clientForProject(project()));
const TextDocument * const curDoc = document("main.cpp");
@@ -2042,8 +2042,8 @@ void ClangdTestExternalChanges::test()
QVERIFY(otherSource.open(QIODevice::WriteOnly));
otherSource.write("blubb");
otherSource.close();
- QVERIFY(waitForSignalOrTimeout(ClangModelManagerSupport::instance(),
- &ClangModelManagerSupport::createdClient, timeOutInMs()));
+ QVERIFY(waitForSignalOrTimeout(LanguageClientManager::instance(),
+ &LanguageClientManager::clientAdded, timeOutInMs()));
ClangdClient * const newClient = ClangModelManagerSupport::clientForProject(project());
QVERIFY(newClient);
QVERIFY(newClient != oldClient);
diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp
index 88f9257327..cfd053fe1b 100644
--- a/src/plugins/languageclient/languageclientmanager.cpp
+++ b/src/plugins/languageclient/languageclientmanager.cpp
@@ -118,6 +118,7 @@ void LanguageClient::LanguageClientManager::addClient(Client *client)
[client](const DynamicCapabilities &capabilities) {
managerInstance->m_inspector.updateCapabilities(client->name(), capabilities);
});
+ emit managerInstance->clientAdded(client);
}
void LanguageClientManager::clientStarted(Client *client)
diff --git a/src/plugins/languageclient/languageclientmanager.h b/src/plugins/languageclient/languageclientmanager.h
index 7fb7c04551..e769fae9dd 100644
--- a/src/plugins/languageclient/languageclientmanager.h
+++ b/src/plugins/languageclient/languageclientmanager.h
@@ -103,6 +103,7 @@ public:
static void showInspector();
signals:
+ void clientAdded(Client *client);
void clientRemoved(Client *client);
void shutdownFinished();