diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index 9f2a5cd8b9c20902d1a8b4517ad2b5d1a2e355e0..8726a4300be2330a6731288ad4ad590c67b23034 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) {