forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -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());
|
||||
|
Reference in New Issue
Block a user