summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodecompletion.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.cpp')
-rw-r--r--src/plugins/cpptools/cppcodecompletion.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 9f2a5cd8b9..8726a4300b 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -1444,23 +1444,27 @@ void CppCodeCompletion::completions(QList<TextEditor::CompletionItem> *completio
QString keyRegExp;
keyRegExp += QLatin1Char('^');
bool first = true;
+ const QLatin1String wordContinuation("[a-z0-9_]*");
foreach (const QChar &c, key) {
- if (c.isUpper() && !first)
- keyRegExp += QLatin1String("[a-z0-9_]*");
+ if (m_caseSensitivity == CaseInsensitive ||
+ (m_caseSensitivity == FirstLetterCaseSensitive && !first)) {
- if (m_caseSensitivity == FirstLetterCaseSensitive && !first) {
- keyRegExp += QLatin1Char('[');
- keyRegExp += QRegExp::escape(c.toLower());
+ keyRegExp += QLatin1String("(?:");
+ if (c.isUpper() && !first)
+ keyRegExp += wordContinuation;
keyRegExp += QRegExp::escape(c.toUpper());
- keyRegExp += QLatin1Char(']');
+ keyRegExp += "|";
+ keyRegExp += QRegExp::escape(c.toLower());
+ keyRegExp += QLatin1Char(')');
} else {
+ if (c.isUpper() && !first)
+ keyRegExp += wordContinuation;
keyRegExp += QRegExp::escape(c);
}
first = false;
}
- const QRegExp regExp(keyRegExp, (m_caseSensitivity == CaseInsensitive)
- ? Qt::CaseInsensitive : Qt::CaseSensitive);
+ const QRegExp regExp(keyRegExp);
foreach (TextEditor::CompletionItem item, m_completions) {
if (regExp.indexIn(item.text) == 0) {