From 704de8d676467238894a104b20bf3c399677b432 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 10 Sep 2019 09:37:35 +0200 Subject: [PATCH] LanguageClient: set assist provider trigger characters just once Instead of setting the completion characters every time after a document was opened only set it when the server capabilities are set. Change-Id: Ia37dc426a98aca1a4884752ac5da2659bfda53ec Reviewed-by: Christian Stenger --- src/plugins/languageclient/client.cpp | 35 ++++++++++++++------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 05b0ef83475..48cdc0a8378 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -320,23 +320,6 @@ bool Client::openDocument(Core::IDocument *document) documentContentsChanged(textDocument, position, charsRemoved, charsAdded); }); - if (auto completionProvider = qobject_cast( - m_clientProviders.completionAssistProvider)) { - completionProvider->setTriggerCharacters( - m_serverCapabilities.completionProvider() - .value_or(ServerCapabilities::CompletionOptions()) - .triggerCharacters() - .value_or(QList())); - } - if (auto functionHintAssistProvider = qobject_cast( - m_clientProviders.completionAssistProvider)) { - functionHintAssistProvider->setTriggerCharacters( - m_serverCapabilities.signatureHelpProvider() - .value_or(ServerCapabilities::SignatureHelpOptions()) - .triggerCharacters() - .value_or(QList())); - } - auto *oldCompletionProvider = qobject_cast( textDocument->completionAssistProvider()); // only replace the completion assist provider if it is the default one or null @@ -1224,6 +1207,24 @@ void Client::intializeCallback(const InitializeRequest::Response &initResponse) m_serverCapabilities = result.capabilities().value_or(ServerCapabilities()); } + + if (auto completionProvider = qobject_cast( + m_clientProviders.completionAssistProvider)) { + completionProvider->setTriggerCharacters( + m_serverCapabilities.completionProvider() + .value_or(ServerCapabilities::CompletionOptions()) + .triggerCharacters() + .value_or(QList())); + } + if (auto functionHintAssistProvider = qobject_cast( + m_clientProviders.completionAssistProvider)) { + functionHintAssistProvider->setTriggerCharacters( + m_serverCapabilities.signatureHelpProvider() + .value_or(ServerCapabilities::SignatureHelpOptions()) + .triggerCharacters() + .value_or(QList())); + } + qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " initialized"; m_state = Initialized; sendContent(InitializeNotification());