diff options
author | David Schulz <david.schulz@qt.io> | 2021-04-08 11:44:12 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2021-04-09 07:48:57 +0000 |
commit | 86679c130b2905d4de88669b481f7eb2e9415aa9 (patch) | |
tree | cb11c0aad76cf4289d43faa6aa8a5080b35cf3dc | |
parent | 7471c3a378cb3115c60ab86c748c00e3101a25ce (diff) | |
download | qt-creator-86679c130b2905d4de88669b481f7eb2e9415aa9.tar.gz |
LanguageClient: update dynamic capabilities just once
Change-Id: I7149f581e55a25672dce44abc751912e02271135
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/plugins/languageclient/client.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 6eca7d8753..9ec611200f 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<Registration> ®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<Registration> ®istrations) void Client::unregisterCapabilities(const QList<Unregistration> &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); } |