LanguageClient: update dynamic capabilities just once

Change-Id: I7149f581e55a25672dce44abc751912e02271135
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2021-04-08 11:44:12 +02:00
parent 7471c3a378
commit 86679c130b

View File

@@ -665,16 +665,15 @@ void Client::documentContentsChanged(TextEditor::TextDocument *document,
void Client::registerCapabilities(const QList<Registration> &registrations) void Client::registerCapabilities(const QList<Registration> &registrations)
{ {
m_dynamicCapabilities.registerCapability(registrations); m_dynamicCapabilities.registerCapability(registrations);
auto methodRegistered = [&](const QString &method) { for (const Registration &registration : registrations) {
return Utils::anyOf(registrations, Utils::equal(&Registration::method, method)); if (registration.method() == CompletionRequest::methodName) {
}; for (auto document : m_openedDocument.keys())
if (methodRegistered(CompletionRequest::methodName)) { updateCompletionProvider(document);
for (auto document : m_openedDocument.keys()) }
updateCompletionProvider(document); if (registration.method() == SignatureHelpRequest::methodName) {
} for (auto document : m_openedDocument.keys())
if (methodRegistered(SignatureHelpRequest::methodName)) { updateFunctionHintProvider(document);
for (auto document : m_openedDocument.keys()) }
updateFunctionHintProvider(document);
} }
emit capabilitiesChanged(m_dynamicCapabilities); emit capabilitiesChanged(m_dynamicCapabilities);
} }
@@ -682,6 +681,16 @@ void Client::registerCapabilities(const QList<Registration> &registrations)
void Client::unregisterCapabilities(const QList<Unregistration> &unregistrations) void Client::unregisterCapabilities(const QList<Unregistration> &unregistrations)
{ {
m_dynamicCapabilities.unregisterCapability(unregistrations); m_dynamicCapabilities.unregisterCapability(unregistrations);
for (const Unregistration &unregistration : unregistrations) {
if (unregistration.method() == CompletionRequest::methodName) {
for (auto document : m_openedDocument.keys())
updateCompletionProvider(document);
}
if (unregistration.method() == SignatureHelpRequest::methodName) {
for (auto document : m_openedDocument.keys())
updateFunctionHintProvider(document);
}
}
emit capabilitiesChanged(m_dynamicCapabilities); emit capabilitiesChanged(m_dynamicCapabilities);
} }