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