summaryrefslogtreecommitdiff
path: root/src/plugins/languageclient/languageclientsettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/languageclient/languageclientsettings.cpp')
-rw-r--r--src/plugins/languageclient/languageclientsettings.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp
index e43d064f01..c059dafed0 100644
--- a/src/plugins/languageclient/languageclientsettings.cpp
+++ b/src/plugins/languageclient/languageclientsettings.cpp
@@ -351,7 +351,8 @@ void LanguageClientSettingsModel::applyChanges()
QList<LanguageClientSettings> toStart = m_settings;
// check currently registered interfaces
for (auto interface : interfaces) {
- auto setting = Utils::findOr(m_settings, LanguageClientSettings(), [interface](const LanguageClientSettings &setting){
+ auto setting = Utils::findOr(m_settings, LanguageClientSettings(),
+ [interface](const LanguageClientSettings &setting){
return interface->matches(setting);
});
if (setting.isValid() && setting.m_enabled) {
@@ -362,8 +363,12 @@ void LanguageClientSettingsModel::applyChanges()
toShutdown << interface;
}
}
- for (auto interface : toShutdown)
- interface->shutdown();
+ for (auto interface : toShutdown) {
+ if (interface->reachable())
+ interface->shutdown();
+ else
+ LanguageClientManager::deleteClient(interface);
+ }
for (auto setting : toStart) {
if (setting.isValid() && setting.m_enabled)
LanguageClientManager::startClient(setting);