diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 75d7caf7c57..649064951b6 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -345,10 +345,13 @@ void Client::openDocument(TextEditor::TextDocument *document) sendContent(DidOpenTextDocumentNotification(DidOpenTextDocumentParams(item))); const Client *currentClient = LanguageClientManager::clientForDocument(document); - if (currentClient == this) // this is the active client for the document so directly activate it + if (currentClient == this) { + // this is the active client for the document so directly activate it activateDocument(document); - else if (currentClient == nullptr) // there is no client for this document so assign it to this server + } else if (m_activateDocAutomatically && currentClient == nullptr) { + // there is no client for this document so assign it to this server LanguageClientManager::openDocumentWithClient(document, this); + } } void Client::sendContent(const IContent &content) @@ -878,6 +881,11 @@ void Client::setSupportedLanguage(const LanguageFilter &filter) m_languagFilter = filter; } +void Client::setActivateDocumentAutomatically(bool enabled) +{ + m_activateDocAutomatically = enabled; +} + void Client::setInitializationOptions(const QJsonObject &initializationOptions) { m_initializationOptions = initializationOptions; diff --git a/src/plugins/languageclient/client.h b/src/plugins/languageclient/client.h index d3d86870fad..776f8856e2a 100644 --- a/src/plugins/languageclient/client.h +++ b/src/plugins/languageclient/client.h @@ -118,6 +118,7 @@ public: // document synchronization void setSupportedLanguage(const LanguageFilter &filter); + void setActivateDocumentAutomatically(bool enabled); bool isSupportedDocument(const TextEditor::TextDocument *document) const; bool isSupportedFile(const Utils::FilePath &filePath, const QString &mimeType) const; bool isSupportedUri(const LanguageServerProtocol::DocumentUri &uri) const; @@ -242,6 +243,7 @@ private: QSet m_runningAssistProcessors; SymbolSupport m_symbolSupport; ProgressManager m_progressManager; + bool m_activateDocAutomatically = false; }; } // namespace LanguageClient diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp index 1845eef2767..9ed4929e6fe 100644 --- a/src/plugins/languageclient/languageclientsettings.cpp +++ b/src/plugins/languageclient/languageclientsettings.cpp @@ -566,6 +566,7 @@ Client *BaseSettings::createClient() client->setName(Utils::globalMacroExpander()->expand(m_name)); client->setSupportedLanguage(m_languageFilter); client->setInitializationOptions(initializationOptions()); + client->setActivateDocumentAutomatically(true); return client; }