From 1b2ad0e98927ecfda6a74ecf746b19e01a22bef7 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 17 Sep 2018 13:55:26 +0200 Subject: [PATCH] LSP: let the settings generate the client In preperation for settings other than the stdio client. Change-Id: I11635119db9165163947d822e911ee26ce8548f1 Reviewed-by: Eike Ziller --- src/plugins/languageclient/languageclientmanager.cpp | 11 ----------- src/plugins/languageclient/languageclientmanager.h | 1 - src/plugins/languageclient/languageclientsettings.cpp | 11 ++++++++++- src/plugins/languageclient/languageclientsettings.h | 4 ++++ 4 files changed, 14 insertions(+), 13 deletions(-) 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();