diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index c3dc398af71..b3e034f1d7b 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -165,17 +165,6 @@ void LanguageClientManager::removeMarks(const Core::Id &id) removeMarks(fileName, id); } -void LanguageClientManager::startClient(LanguageClientSettings setting) -{ - if (managerInstance->m_shuttingDown) - return; - auto client = new StdIOClient(setting.m_executable, setting.m_arguments); - client->setName(setting.m_name); - if (setting.m_mimeType != noLanguageFilter) - client->setSupportedMimeType({setting.m_mimeType}); - startClient(client); -} - void LanguageClientManager::startClient(BaseClient *client) { if (managerInstance->m_shuttingDown) { diff --git a/src/plugins/languageclient/languageclientmanager.h b/src/plugins/languageclient/languageclientmanager.h index b15deca0f6a..2d41f117318 100644 --- a/src/plugins/languageclient/languageclientmanager.h +++ b/src/plugins/languageclient/languageclientmanager.h @@ -61,7 +61,6 @@ public: static void removeMarks(const Utils::FileName &fileName, const Core::Id &id); static void removeMarks(const Core::Id &id); - static void startClient(LanguageClientSettings setting); static void startClient(BaseClient *client); static QVector clients(); diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp index c059dafed09..d87875b850d 100644 --- a/src/plugins/languageclient/languageclientsettings.cpp +++ b/src/plugins/languageclient/languageclientsettings.cpp @@ -371,7 +371,7 @@ void LanguageClientSettingsModel::applyChanges() } for (auto setting : toStart) { if (setting.isValid() && setting.m_enabled) - LanguageClientManager::startClient(setting); + LanguageClientManager::startClient(setting.createClient()); } } @@ -389,6 +389,15 @@ bool LanguageClientSettings::operator==(const LanguageClientSettings &other) con && m_arguments == other.m_arguments; } +BaseClient *LanguageClientSettings::createClient() +{ + auto client = new StdIOClient(m_executable, m_arguments); + client->setName(m_name); + if (m_mimeType != noLanguageFilter) + client->setSupportedMimeType({m_mimeType}); + return client; +} + QVariantMap LanguageClientSettings::toMap() const { QVariantMap map; diff --git a/src/plugins/languageclient/languageclientsettings.h b/src/plugins/languageclient/languageclientsettings.h index 152281de5a4..77fde957db5 100644 --- a/src/plugins/languageclient/languageclientsettings.h +++ b/src/plugins/languageclient/languageclientsettings.h @@ -35,6 +35,8 @@ namespace LanguageClient { constexpr char noLanguageFilter[] = "No Filter"; +class BaseClient; + class LanguageClientSettings { public: @@ -57,6 +59,8 @@ public: bool operator==(const LanguageClientSettings &other) const; + BaseClient *createClient(); + QVariantMap toMap() const; static LanguageClientSettings fromMap(const QVariantMap &map); static void init();