From 0dc449944d379cdc4ebaa0930ab316bccd0ebd5c Mon Sep 17 00:00:00 2001
From: Leandro Melo <leandro.melo@nokia.com>
Date: Wed, 18 May 2011 14:08:19 +0200
Subject: [PATCH] c++ editor: Fix automatic completion for includes

Reviewed-by: Roberto Raggi
---
 src/plugins/cpptools/cppcompletionassist.cpp | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp
index b4c6da6c1f8..4eac92047d6 100644
--- a/src/plugins/cpptools/cppcompletionassist.cpp
+++ b/src/plugins/cpptools/cppcompletionassist.cpp
@@ -748,8 +748,22 @@ bool CppCompletionAssistProcessor::accepts() const
                     const int tokenIdx = SimpleLexer::tokenBefore(tokens, qMax(0, tc.positionInBlock() - 1));
                     const Token tk = (tokenIdx == -1) ? Token() : tokens.at(tokenIdx);
 
-                    if (!tk.isComment() && !tk.isLiteral())
+                    if (!tk.isComment() && !tk.isLiteral()) {
                         return true;
+                    } else if (tk.isLiteral()
+                               && tokens.size() == 3
+                               && tokens.at(0).kind() == T_POUND
+                               && tokens.at(1).kind() == T_IDENTIFIER) {
+                        const QString &line = tc.block().text();
+                        const Token &idToken = tokens.at(1);
+                        const QStringRef &identifier =
+                                line.midRef(idToken.begin(), idToken.end() - idToken.begin());
+                        if (identifier == QLatin1String("include")
+                                || identifier == QLatin1String("include_next")
+                                || (m_objcEnabled && identifier == QLatin1String("import"))) {
+                            return true;
+                        }
+                    }
                 }
             }
         }
-- 
GitLab