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