From aeaaa39225ab178ff7e1119d9ddf71e83b32c6f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com>
Date: Thu, 7 Jan 2010 14:15:04 +0100
Subject: [PATCH] Use the completion case sensitivity settings also for
 relevance

Avoids some annoyance for people using case-sensitive completion, when
unrelated completions items would get higher relevance because they
start with the typed string when matched case-insensitively.

In case-insensitive mode, a case-sensitive prefix match now does get a
higher relevance than a case-insensitive match.

Reviewed-by: con
---
 src/plugins/cpptools/cppcodecompletion.cpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 41373494ec1..2d1f14607fd 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -1493,10 +1493,17 @@ void CppCodeCompletion::completions(QList<TextEditor::CompletionItem> *completio
             }
             const QRegExp regExp(keyRegExp, m_caseSensitivity);
 
+            const bool hasKey = !key.isEmpty();
             foreach (TextEditor::CompletionItem item, m_completions) {
                 if (regExp.indexIn(item.text) == 0) {
-                    item.relevance = (key.length() > 0 &&
-                                         item.text.startsWith(key, Qt::CaseInsensitive)) ? 1 : 0;
+                    if (hasKey) {
+                        if (item.text.startsWith(key, Qt::CaseSensitive)) {
+                            item.relevance = 2;
+                        } else if (m_caseSensitivity == Qt::CaseInsensitive
+                                   && item.text.startsWith(key, Qt::CaseInsensitive)) {
+                            item.relevance = 1;
+                        }
+                    }
                     (*completions) << item;
                 }
             }
-- 
GitLab