From 01caf29221157aedce6ef5818ac4db156c3f8628 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 23 Feb 2021 08:38:39 +0100 Subject: [PATCH] LanguageClient: assign document to correct client If a server is setup to start per project we want to open files of a project in the matching server by default. Change-Id: Ie266fd858420acd75b7a1fd45be7bee2b06460aa Reviewed-by: Christian Stenger --- .../languageclient/languageclientmanager.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index d09edb78771..2f69bada526 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -472,13 +472,17 @@ void LanguageClientManager::documentOpened(Core::IDocument *document) continue; // check whether we already have a client running for this project - if (Utils::findOrDefault(clients, - [project](const QPointer &client) { - return client->project() == project; - })) { - continue; + Client *clientForProject = Utils::findOrDefault(clients, + [project](Client *client) { + return client->project() + == project; + }); + if (!clientForProject) { + clientForProject = startClient(setting, project); + clients << clientForProject; } - clients << startClient(setting, project); + QTC_ASSERT(clientForProject, continue); + openDocumentWithClient(textDocument, clientForProject); } } else if (setting->m_startBehavior == BaseSettings::RequiresFile && clients.isEmpty()) { clients << startClient(setting);