summaryrefslogtreecommitdiff
path: root/src/plugins/languageclient/languageclientcompletionassist.cpp
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2022-06-14 09:53:26 +0200
committerDavid Schulz <david.schulz@qt.io>2022-06-15 12:11:20 +0000
commitd80a713b894355f26048a54554ac125124f30e27 (patch)
tree93a1a76e0a7303e4a1f3aa684bd5c39fd7aebb6b /src/plugins/languageclient/languageclientcompletionassist.cpp
parenta7d8698bf212fb7751069941c44719eb613dc40c (diff)
downloadqt-creator-d80a713b894355f26048a54554ac125124f30e27.tar.gz
LanguageClient: move relevant snippets to the front
If a snippet starts with the current prefix move it to the front of the proposed completions. Fixes: QTCREATORBUG-27566 Change-Id: I568d34e4da596a8cf4f08eb88eb1ee865edbed70 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/languageclient/languageclientcompletionassist.cpp')
-rw-r--r--src/plugins/languageclient/languageclientcompletionassist.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp
index e9e8ad6453..e10729987c 100644
--- a/src/plugins/languageclient/languageclientcompletionassist.cpp
+++ b/src/plugins/languageclient/languageclientcompletionassist.cpp
@@ -233,7 +233,7 @@ public:
// GenericProposalModel interface
bool containsDuplicates() const override { return false; }
bool isSortable(const QString &/*prefix*/) const override;
- void sort(const QString &/*prefix*/) override;
+ void sort(const QString &prefix) override;
bool supportsPrefixExpansion() const override { return false; }
QList<AssistProposalItemInterface *> items() const { return m_currentItems; }
@@ -247,19 +247,21 @@ bool LanguageClientCompletionModel::isSortable(const QString &) const
});
}
-void LanguageClientCompletionModel::sort(const QString &/*prefix*/)
+void LanguageClientCompletionModel::sort(const QString &prefix)
{
std::sort(m_currentItems.begin(), m_currentItems.end(),
- [] (AssistProposalItemInterface *a, AssistProposalItemInterface *b){
+ [&prefix] (AssistProposalItemInterface *a, AssistProposalItemInterface *b){
const auto lca = dynamic_cast<LanguageClientCompletionItem *>(a);
const auto lcb = dynamic_cast<LanguageClientCompletionItem *>(b);
if (!lca && !lcb)
return a->text() < b->text();
if (lca && lcb)
return *lca < *lcb;
- if (lca && !lcb)
- return true;
- return false;
+ if (prefix.isEmpty())
+ return lca && !lcb;
+ if (!lca)
+ return a->text().toLower().startsWith(prefix.toLower());
+ return !b->text().toLower().startsWith(prefix.toLower());
});
}