summaryrefslogtreecommitdiff
path: root/src/plugins/languageclient
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2019-09-10 09:37:35 +0200
committerDavid Schulz <david.schulz@qt.io>2019-09-12 07:26:51 +0000
commit704de8d676467238894a104b20bf3c399677b432 (patch)
tree966cc5532a7158e58eddc08dafb86caa14b53569 /src/plugins/languageclient
parent25601fbbf0948d394376b0264aaaad3928be5c1f (diff)
downloadqt-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.cpp35
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());