forked from qt-creator/qt-creator
Sort the completion items when searching for common prefixes.
Reviewed-by: Thorbjørn Lindeijer
This commit is contained in:
@@ -745,7 +745,7 @@ int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
|
||||
}
|
||||
|
||||
if (m_completionOperator != T_EOF_SYMBOL)
|
||||
qSort(m_completions.begin(), m_completions.end(), completionItemLessThan);
|
||||
sortCompletion(m_completions);
|
||||
|
||||
// always remove duplicates
|
||||
m_completions = removeDuplicates(m_completions);
|
||||
|
||||
@@ -1074,13 +1074,18 @@ static bool qmlCompletionItemLessThan(const TextEditor::CompletionItem &l, const
|
||||
return l.text < r.text;
|
||||
}
|
||||
|
||||
void CodeCompletion::sortCompletion(QList<TextEditor::CompletionItem> &completionItems)
|
||||
{
|
||||
qStableSort(completionItems.begin(), completionItems.end(), qmlCompletionItemLessThan);
|
||||
}
|
||||
|
||||
QList<TextEditor::CompletionItem> CodeCompletion::getCompletions()
|
||||
{
|
||||
QList<TextEditor::CompletionItem> completionItems;
|
||||
|
||||
completions(&completionItems);
|
||||
|
||||
qStableSort(completionItems.begin(), completionItems.end(), qmlCompletionItemLessThan);
|
||||
sortCompletion(completionItems);
|
||||
|
||||
// Remove duplicates
|
||||
QString lastKey;
|
||||
|
||||
@@ -77,6 +77,7 @@ public:
|
||||
virtual void complete(const TextEditor::CompletionItem &item, QChar typedChar);
|
||||
virtual bool partiallyComplete(const QList<TextEditor::CompletionItem> &completionItems);
|
||||
virtual QList<TextEditor::CompletionItem> getCompletions();
|
||||
virtual void sortCompletion(QList<TextEditor::CompletionItem> &completionItems);
|
||||
|
||||
virtual void cleanup();
|
||||
|
||||
|
||||
@@ -127,10 +127,15 @@ QList<CompletionItem> ICompletionCollector::getCompletions()
|
||||
return uniquelist;
|
||||
}
|
||||
|
||||
bool ICompletionCollector::partiallyComplete(const QList<TextEditor::CompletionItem> &completionItems)
|
||||
bool ICompletionCollector::partiallyComplete(const QList<TextEditor::CompletionItem> &items)
|
||||
{
|
||||
if (! m_d->m_completionSettings.m_partiallyComplete)
|
||||
return false;
|
||||
if (items.size() >= 100)
|
||||
return false;
|
||||
|
||||
QList<TextEditor::CompletionItem> completionItems = items;
|
||||
sortCompletion(completionItems);
|
||||
|
||||
// Compute common prefix
|
||||
QString firstKey = completionItems.first().text;
|
||||
@@ -155,6 +160,11 @@ bool ICompletionCollector::partiallyComplete(const QList<TextEditor::CompletionI
|
||||
return false;
|
||||
}
|
||||
|
||||
void ICompletionCollector::sortCompletion(QList<TextEditor::CompletionItem> &completionItems)
|
||||
{
|
||||
qStableSort(completionItems.begin(), completionItems.end(), &ICompletionCollector::completionItemLessThan);
|
||||
}
|
||||
|
||||
void ICompletionCollector::filter(const QList<TextEditor::CompletionItem> &items,
|
||||
QList<TextEditor::CompletionItem> *filteredItems,
|
||||
const QString &key)
|
||||
|
||||
@@ -139,6 +139,8 @@ public:
|
||||
*/
|
||||
virtual bool partiallyComplete(const QList<TextEditor::CompletionItem> &completionItems);
|
||||
|
||||
virtual void sortCompletion(QList<TextEditor::CompletionItem> &completionItems);
|
||||
|
||||
/* Called when it's safe to clean up the completion items.
|
||||
*/
|
||||
virtual void cleanup() = 0;
|
||||
|
||||
Reference in New Issue
Block a user