diff --git a/src/plugins/qmljseditor/qmlcodecompletion.cpp b/src/plugins/qmljseditor/qmlcodecompletion.cpp index 5a97ffa77bf..0d9094608f2 100644 --- a/src/plugins/qmljseditor/qmlcodecompletion.cpp +++ b/src/plugins/qmljseditor/qmlcodecompletion.cpp @@ -399,3 +399,28 @@ void QmlCodeCompletion::updateSnippets() qWarning() << qmlsnippets << xml.errorString(); file.close(); } + +QList QmlCodeCompletion::getCompletions() +{ + QList completionItems; + + completions(&completionItems); + + qStableSort(completionItems.begin(), completionItems.end(), completionItemLessThan); + + // Remove duplicates + QString lastKey; + QList uniquelist; + + foreach (const TextEditor::CompletionItem &item, completionItems) { + if (item.text != lastKey) { + uniquelist.append(item); + lastKey = item.text; + } else { + if (item.data.canConvert()) + uniquelist.append(item); + } + } + + return uniquelist; +} diff --git a/src/plugins/qmljseditor/qmlcodecompletion.h b/src/plugins/qmljseditor/qmlcodecompletion.h index 8adc066fc9f..fc0721fd29e 100644 --- a/src/plugins/qmljseditor/qmlcodecompletion.h +++ b/src/plugins/qmljseditor/qmlcodecompletion.h @@ -61,6 +61,8 @@ public: virtual void completions(QList *completions); virtual void complete(const TextEditor::CompletionItem &item); virtual bool partiallyComplete(const QList &completionItems); + virtual QList getCompletions(); + virtual void cleanup(); private: