Editor: consider all providers with matching activation chars

Amends 45317da25a

Change-Id: I6bc748f2be54f47c0e23788352f74cecdd5d730f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2022-11-10 15:10:12 +01:00
parent e70658d9e9
commit 63a8218680

View File

@@ -59,7 +59,7 @@ public:
QVariant userData() const;
void setUserData(const QVariant &data);
CompletionAssistProvider *identifyActivationSequence();
QList<CompletionAssistProvider *> identifyActivationSequence();
void stopAutomaticProposalTimer();
void startAutomaticProposalTimer();
@@ -149,8 +149,9 @@ bool CodeAssistantPrivate::requestActivationCharProposal()
if (m_editorWidget->multiTextCursor().hasMultipleCursors())
return false;
if (m_assistKind == Completion && m_settings.m_completionTrigger != ManualCompletion) {
if (CompletionAssistProvider *provider = identifyActivationSequence()) {
for (CompletionAssistProvider *provider : identifyActivationSequence()) {
requestProposal(ActivationCharacter, Completion, provider);
if (isDisplayingProposal() || isWaitingForProposal())
return true;
}
}
@@ -433,7 +434,7 @@ void CodeAssistantPrivate::invalidateCurrentRequestData()
m_receivedContentWhileWaiting = false;
}
CompletionAssistProvider *CodeAssistantPrivate::identifyActivationSequence()
QList<CompletionAssistProvider *> CodeAssistantPrivate::identifyActivationSequence()
{
auto checkActivationSequence = [this](CompletionAssistProvider *provider) {
if (!provider)
@@ -452,11 +453,11 @@ CompletionAssistProvider *CodeAssistantPrivate::identifyActivationSequence()
return provider->isActivationCharSequence(sequence);
};
auto provider = {
QList<CompletionAssistProvider *> provider = {
m_editorWidget->textDocument()->completionAssistProvider(),
m_editorWidget->textDocument()->functionHintAssistProvider()
};
return Utils::findOrDefault(provider, checkActivationSequence);
return Utils::filtered(provider, checkActivationSequence);
}
void CodeAssistantPrivate::notifyChange()