summaryrefslogtreecommitdiff
path: root/src/plugins/languageclient/languageclientmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/languageclient/languageclientmanager.cpp')
-rw-r--r--src/plugins/languageclient/languageclientmanager.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp
index d07f074bf6..6a1b8ff5a8 100644
--- a/src/plugins/languageclient/languageclientmanager.cpp
+++ b/src/plugins/languageclient/languageclientmanager.cpp
@@ -458,9 +458,9 @@ void LanguageClientManager::documentOpened(Core::IDocument *document)
// check whether we have to start servers for this document
const QList<BaseSettings *> settings = currentSettings();
for (BaseSettings *setting : settings) {
- QVector<Client *> clients = clientForSetting(setting);
if (setting->isValid() && setting->m_enabled
&& setting->m_languageFilter.isSupported(document)) {
+ QVector<Client *> clients = clientForSetting(setting);
if (setting->m_startBehavior == BaseSettings::RequiresProject) {
const Utils::FilePath &filePath = document->filePath();
for (ProjectExplorer::Project *project :
@@ -475,12 +475,14 @@ void LanguageClientManager::documentOpened(Core::IDocument *document)
return client->project()
== project;
});
- if (!clientForProject) {
+ if (!clientForProject)
clientForProject = startClient(setting, project);
- clients << clientForProject;
- }
+
QTC_ASSERT(clientForProject, continue);
openDocumentWithClient(textDocument, clientForProject);
+ // Since we already opened the document in this client we remove the client
+ // from the list of clients that receive the openDocument call
+ clients.removeAll(clientForProject);
}
} else if (setting->m_startBehavior == BaseSettings::RequiresFile && clients.isEmpty()) {
clients << startClient(setting);