diff options
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(); |