diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 6eca7d87537..9ec611200ff 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -665,16 +665,15 @@ void Client::documentContentsChanged(TextEditor::TextDocument *document, void Client::registerCapabilities(const QList ®istrations) { m_dynamicCapabilities.registerCapability(registrations); - auto methodRegistered = [&](const QString &method) { - return Utils::anyOf(registrations, Utils::equal(&Registration::method, method)); - }; - if (methodRegistered(CompletionRequest::methodName)) { - for (auto document : m_openedDocument.keys()) - updateCompletionProvider(document); - } - if (methodRegistered(SignatureHelpRequest::methodName)) { - for (auto document : m_openedDocument.keys()) - updateFunctionHintProvider(document); + for (const Registration ®istration : registrations) { + if (registration.method() == CompletionRequest::methodName) { + for (auto document : m_openedDocument.keys()) + updateCompletionProvider(document); + } + if (registration.method() == SignatureHelpRequest::methodName) { + for (auto document : m_openedDocument.keys()) + updateFunctionHintProvider(document); + } } emit capabilitiesChanged(m_dynamicCapabilities); } @@ -682,6 +681,16 @@ void Client::registerCapabilities(const QList ®istrations) void Client::unregisterCapabilities(const QList &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); }