forked from qt-creator/qt-creator
LanguageClient: fix hasItemsToPropose check in completion model
Prefilter the candidates before checking whether the item is a perfect match allows to ignore items that are part of the inserted code to complete. In the example of QTCREATORBUG-32013 tex matched against x and returned a perfect match in that case. If the model reports a perfect match the completion widget is not shown by default but needs to be triggered explicitly. Fixes: QTCREATORBUG-32013 Change-Id: Icd1da6163f0bee2ff09a37456dd51b350fd4fe10 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -347,11 +347,16 @@ public:
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
// IAssistProposal interface
|
// IAssistProposal interface
|
||||||
bool hasItemsToPropose(const QString &/*text*/, AssistReason reason) const override
|
bool hasItemsToPropose(const QString &prefix, AssistReason reason) const override
|
||||||
{
|
{
|
||||||
if (m_model->size() <= 0 || m_document.isNull())
|
if (m_model->size() <= 0 || m_document.isNull())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!prefix.isEmpty()) {
|
||||||
|
m_model->filter(prefix);
|
||||||
|
m_model->setPrefilterPrefix(prefix);
|
||||||
|
}
|
||||||
|
|
||||||
return m_model->keepPerfectMatch(reason)
|
return m_model->keepPerfectMatch(reason)
|
||||||
|| !Utils::anyOf(m_model->items(), [this](AssistProposalItemInterface *item){
|
|| !Utils::anyOf(m_model->items(), [this](AssistProposalItemInterface *item){
|
||||||
if (const auto lcItem = dynamic_cast<LanguageClientCompletionItem *>(item))
|
if (const auto lcItem = dynamic_cast<LanguageClientCompletionItem *>(item))
|
||||||
|
Reference in New Issue
Block a user