diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index 3826f151cc0..24022b10cea 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -73,6 +73,7 @@ public: quint64 hash() const override; const QString &sortText() const; + bool hasSortText() const; bool operator <(const LanguageClientCompletionItem &other) const; @@ -208,6 +209,11 @@ const QString &LanguageClientCompletionItem::sortText() const return m_sortText; } +bool LanguageClientCompletionItem::hasSortText() const +{ + return m_item.sortText().has_value(); +} + QString LanguageClientCompletionItem::filterText() const { if (m_filterText.isEmpty()) { @@ -249,7 +255,7 @@ class LanguageClientCompletionModel : public GenericProposalModel public: // GenericProposalModel interface bool containsDuplicates() const override { return false; } - bool isSortable(const QString &/*prefix*/) const override { return true; } + bool isSortable(const QString &/*prefix*/) const override; void sort(const QString &/*prefix*/) override; bool supportsPrefixExpansion() const override { return false; } @@ -257,6 +263,11 @@ public: { return Utils::static_container_cast(m_currentItems); } }; +bool LanguageClientCompletionModel::isSortable(const QString &) const +{ + return Utils::anyOf(items(), &LanguageClientCompletionItem::hasSortText); +} + void LanguageClientCompletionModel::sort(const QString &/*prefix*/) { std::sort(m_currentItems.begin(), m_currentItems.end(),