From 69a74abf26581a897b37fe2ccc6d523f10fe7f5e Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@nokia.com>
Date: Tue, 6 Jul 2010 10:57:39 +0200
Subject: [PATCH] Fixed completion for doxygen comments.

---
 src/libs/cplusplus/SimpleLexer.cpp         | 2 +-
 src/plugins/cpptools/cppcodecompletion.cpp | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/libs/cplusplus/SimpleLexer.cpp b/src/libs/cplusplus/SimpleLexer.cpp
index e03208f2f72..4db184ca121 100644
--- a/src/libs/cplusplus/SimpleLexer.cpp
+++ b/src/libs/cplusplus/SimpleLexer.cpp
@@ -161,7 +161,7 @@ int SimpleLexer::tokenBefore(const QList<Token> &tokens, unsigned offset)
 {
     for (int index = tokens.size() - 1; index >= 0; --index) {
         const Token &tk = tokens.at(index);
-        if (tk.begin() <= offset)
+        if (tk.begin() < offset)
             return index;
     }
 
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index f4794d4886d..733671fa515 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -554,9 +554,10 @@ static int startOfOperator(TextEditor::ITextEditable *editor,
 
     SimpleLexer tokenize;
     tokenize.setQtMocRunEnabled(true);
+    tokenize.setObjCEnabled(true);
     tokenize.setSkipComments(false);
-    const QList<Token> &tokens = tokenize(tc.block().text());
-    const int tokenIdx = SimpleLexer::tokenAt(tokens, qMax(0, tc.positionInBlock() - 1)); // get the token at the left of the cursor
+    const QList<Token> &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block()));
+    const int tokenIdx = SimpleLexer::tokenBefore(tokens, qMax(0, tc.positionInBlock() - 1)); // get the token at the left of the cursor
     const Token tk = (tokenIdx == -1) ? Token() : tokens.at(tokenIdx);
 
     if (completionKind == T_DOXY_COMMENT && !(tk.is(T_DOXY_COMMENT) || tk.is(T_CPP_DOXY_COMMENT))) {
-- 
GitLab