aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolai Kosjar <[email protected]>2016-07-26 08:52:12 +0200
committerNikolai Kosjar <[email protected]>2016-07-26 11:49:17 +0000
commit9d5705a755d747560440092747a9025c12ba7a72 (patch)
treee60122cdcf615629819232abfddc975b5cdaba59
parentead6853b09e0483198dbe3502a5a9f985768b930 (diff)
Clang: Stop trying to remove duplicate completion items
We assume that libclang does not return any duplicates, at least we never noticed any so far. For the concrete test below no duplicates were removed. Function overloads are not problematic because they are folded into one ClangAssistProposalItem (addOverload()). To the completion items from libclang we add the Qt Creator snippets as items. Those might have the same text in the completion list view, but their icon is different (e.g. consider the keyword completion "class" and the Qt Creator snippet "class"), thus the user can still tell them apart. Test: 1. Open src/plugins/clangstaticanalyzer/unit-tests/qt-essential-includes.pro 2. Open main.cpp 3. Complete in the main function Measured with a timer in IpcReceiver::codeCompleted. On Linux, for 20637 completion items: Before: 74ms (avg) Now: 66ms (avg) Gain: 11% Change-Id: I524eaa09f8d9e07c78dc9efcc77f7e021c6f37f7 Reviewed-by: Tim Jenssen <[email protected]>
-rw-r--r--src/plugins/clangcodemodel/clangassistproposalmodel.cpp5
-rw-r--r--src/plugins/clangcodemodel/clangassistproposalmodel.h2
-rw-r--r--src/plugins/texteditor/codeassist/genericproposalmodel.cpp6
-rw-r--r--src/plugins/texteditor/codeassist/genericproposalmodel.h1
-rw-r--r--src/plugins/texteditor/codeassist/genericproposalwidget.cpp3
5 files changed, 15 insertions, 2 deletions
diff --git a/src/plugins/clangcodemodel/clangassistproposalmodel.cpp b/src/plugins/clangcodemodel/clangassistproposalmodel.cpp
index 06dc7b3198c..b134e8fea42 100644
--- a/src/plugins/clangcodemodel/clangassistproposalmodel.cpp
+++ b/src/plugins/clangcodemodel/clangassistproposalmodel.cpp
@@ -40,6 +40,11 @@ ClangAssistProposalModel::ClangAssistProposalModel(
{
}
+bool ClangAssistProposalModel::containsDuplicates() const
+{
+ return false;
+}
+
bool ClangAssistProposalModel::isSortable(const QString &/*prefix*/) const
{
return true;
diff --git a/src/plugins/clangcodemodel/clangassistproposalmodel.h b/src/plugins/clangcodemodel/clangassistproposalmodel.h
index 32b25bf9d00..6a722145139 100644
--- a/src/plugins/clangcodemodel/clangassistproposalmodel.h
+++ b/src/plugins/clangcodemodel/clangassistproposalmodel.h
@@ -39,6 +39,8 @@ class ClangAssistProposalModel : public TextEditor::GenericProposalModel
public:
ClangAssistProposalModel(ClangBackEnd::CompletionCorrection neededCorrection);
+ bool containsDuplicates() const override;
+
bool isSortable(const QString &prefix) const override;
void sort(const QString &prefix) override;
diff --git a/src/plugins/texteditor/codeassist/genericproposalmodel.cpp b/src/plugins/texteditor/codeassist/genericproposalmodel.cpp
index 3b5e14e1faf..1afd0b8451f 100644
--- a/src/plugins/texteditor/codeassist/genericproposalmodel.cpp
+++ b/src/plugins/texteditor/codeassist/genericproposalmodel.cpp
@@ -170,7 +170,6 @@ QString GenericProposalModel::detail(int index) const
return m_currentItems.at(index)->detail();
}
-// make it optional because it is not needed in many cases
void GenericProposalModel::removeDuplicates()
{
QHash<QString, quint64> unique;
@@ -272,6 +271,11 @@ int GenericProposalModel::persistentId(int index) const
return m_idByText.value(m_currentItems.at(index)->text());
}
+bool GenericProposalModel::containsDuplicates() const
+{
+ return true;
+}
+
bool GenericProposalModel::supportsPrefixExpansion() const
{
return true;
diff --git a/src/plugins/texteditor/codeassist/genericproposalmodel.h b/src/plugins/texteditor/codeassist/genericproposalmodel.h
index 7004770f198..d3ff31fb6f9 100644
--- a/src/plugins/texteditor/codeassist/genericproposalmodel.h
+++ b/src/plugins/texteditor/codeassist/genericproposalmodel.h
@@ -53,6 +53,7 @@ public:
virtual QIcon icon(int index) const;
virtual QString detail(int index) const;
virtual int persistentId(int index) const;
+ virtual bool containsDuplicates() const;
virtual void removeDuplicates();
virtual void filter(const QString &prefix);
virtual bool isSortable(const QString &prefix) const;
diff --git a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
index 2da949edee2..4a1e1eff671 100644
--- a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
+++ b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
@@ -407,7 +407,8 @@ void GenericProposalWidget::setIsSynchronized(bool isSync)
void GenericProposalWidget::showProposal(const QString &prefix)
{
ensurePolished();
- d->m_model->removeDuplicates();
+ if (d->m_model->containsDuplicates())
+ d->m_model->removeDuplicates();
if (!updateAndCheck(prefix))
return;
show();