diff options
author | David Schulz <david.schulz@qt.io> | 2019-09-10 09:37:35 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2019-09-12 07:26:51 +0000 |
commit | 704de8d676467238894a104b20bf3c399677b432 (patch) | |
tree | 966cc5532a7158e58eddc08dafb86caa14b53569 /src/plugins/languageclient | |
parent | 25601fbbf0948d394376b0264aaaad3928be5c1f (diff) | |
download | qt-creator-704de8d676467238894a104b20bf3c399677b432.tar.gz |
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 <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/languageclient')
-rw-r--r-- | src/plugins/languageclient/client.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 05b0ef8347..48cdc0a837 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<LanguageClientCompletionAssistProvider *>( - m_clientProviders.completionAssistProvider)) { - completionProvider->setTriggerCharacters( - m_serverCapabilities.completionProvider() - .value_or(ServerCapabilities::CompletionOptions()) - .triggerCharacters() - .value_or(QList<QString>())); - } - if (auto functionHintAssistProvider = qobject_cast<FunctionHintAssistProvider *>( - m_clientProviders.completionAssistProvider)) { - functionHintAssistProvider->setTriggerCharacters( - m_serverCapabilities.signatureHelpProvider() - .value_or(ServerCapabilities::SignatureHelpOptions()) - .triggerCharacters() - .value_or(QList<QString>())); - } - auto *oldCompletionProvider = qobject_cast<DocumentContentCompletionProvider *>( 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<LanguageClientCompletionAssistProvider *>( + m_clientProviders.completionAssistProvider)) { + completionProvider->setTriggerCharacters( + m_serverCapabilities.completionProvider() + .value_or(ServerCapabilities::CompletionOptions()) + .triggerCharacters() + .value_or(QList<QString>())); + } + if (auto functionHintAssistProvider = qobject_cast<FunctionHintAssistProvider *>( + m_clientProviders.completionAssistProvider)) { + functionHintAssistProvider->setTriggerCharacters( + m_serverCapabilities.signatureHelpProvider() + .value_or(ServerCapabilities::SignatureHelpOptions()) + .triggerCharacters() + .value_or(QList<QString>())); + } + qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " initialized"; m_state = Initialized; sendContent(InitializeNotification()); |