summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodecompletion.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-10-08 15:32:12 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2009-10-08 15:33:17 +0200
commit7105b773a12e8c0f79d31a9596f6c35b32d0bd08 (patch)
tree3565aab7a0eb706a613a8ec377beeff6c24c8919 /src/plugins/cpptools/cppcodecompletion.cpp
parent6bcfee48403053c12dab7f97148f208dc1c7e6a6 (diff)
downloadqt-creator-7105b773a12e8c0f79d31a9596f6c35b32d0bd08.tar.gz
Enable completion in C++ ctor-initializers. For example,
struct foo { int m_zoo; foo(): m_ // cursor is here.
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.cpp')
-rw-r--r--src/plugins/cpptools/cppcodecompletion.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index aa071b7359..5e8df20ac0 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -640,6 +640,14 @@ static int startOfOperator(TextEditor::ITextEditable *editor,
}
}
+ if (k == T_COMMA) {
+ ExpressionUnderCursor expressionUnderCursor;
+ if (expressionUnderCursor.startOfFunctionCall(tc) == -1) {
+ k = T_EOF_SYMBOL;
+ start = pos;
+ }
+ }
+
static CPlusPlus::TokenUnderCursor tokenUnderCursor;
const SimpleToken tk = tokenUnderCursor(tc);
@@ -783,11 +791,14 @@ int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
if (m_completionOperator == T_COMMA) {
tc.setPosition(endOfExpression);
const int start = expressionUnderCursor.startOfFunctionCall(tc);
- if (start != -1) {
- endOfExpression = start;
- m_startPosition = start + 1;
- m_completionOperator = T_LPAREN;
+ if (start == -1) {
+ m_completionOperator = T_EOF_SYMBOL;
+ return -1;
}
+
+ endOfExpression = start;
+ m_startPosition = start + 1;
+ m_completionOperator = T_LPAREN;
}
QString expression;