diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-10-08 15:32:12 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-10-08 15:33:17 +0200 |
commit | 7105b773a12e8c0f79d31a9596f6c35b32d0bd08 (patch) | |
tree | 3565aab7a0eb706a613a8ec377beeff6c24c8919 /src/plugins/cpptools/cppcodecompletion.cpp | |
parent | 6bcfee48403053c12dab7f97148f208dc1c7e6a6 (diff) | |
download | qt-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.cpp | 19 |
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; |