diff options
Diffstat (limited to 'src/plugins/qmljseditor/qmljscompletionassist.cpp')
-rw-r--r-- | src/plugins/qmljseditor/qmljscompletionassist.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/plugins/qmljseditor/qmljscompletionassist.cpp b/src/plugins/qmljseditor/qmljscompletionassist.cpp index 65a80f6d29..16661622d3 100644 --- a/src/plugins/qmljseditor/qmljscompletionassist.cpp +++ b/src/plugins/qmljseditor/qmljscompletionassist.cpp @@ -985,13 +985,16 @@ const SemanticInfo &QmlJSCompletionAssistInterface::semanticInfo() const namespace { -struct QmlJSLessThan +class QmlJSLessThan { +public: + QmlJSLessThan(const QString &searchString) : m_searchString(searchString) + { } bool operator() (const BasicProposalItem *a, const BasicProposalItem *b) { if (a->order() != b->order()) return a->order() > b->order(); - else if (a->text().isEmpty()) + else if (a->text().isEmpty() && ! b->text().isEmpty()) return true; else if (b->text().isEmpty()) return false; @@ -1001,8 +1004,14 @@ struct QmlJSLessThan return false; else if (a->text().at(0).isLower() && b->text().at(0).isUpper()) return true; + int m1 = PersistentTrie::matchStrength(m_searchString, a->text()); + int m2 = PersistentTrie::matchStrength(m_searchString, b->text()); + if (m1 != m2) + return m1 > m2; return a->text() < b->text(); } +private: + QString m_searchString; }; } // Anonymous @@ -1023,9 +1032,9 @@ void QmlJSAssistProposalModel::filter(const QString &prefix) m_currentItems = newCurrentItems; } -void QmlJSAssistProposalModel::sort(const QString &) +void QmlJSAssistProposalModel::sort(const QString &prefix) { - qSort(currentItems().first, currentItems().second, QmlJSLessThan()); + qSort(currentItems().first, currentItems().second, QmlJSLessThan(prefix)); } bool QmlJSAssistProposalModel::keepPerfectMatch(TextEditor::AssistReason reason) const |