summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodecompletion.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-05-18 17:57:49 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-05-18 17:57:49 +0200
commit8f9e2eebe77bf709e5b6c1363e4fdbea9a561a9e (patch)
tree4ab7d70a58fa4c9c11b2f29937a23a3af31b0089 /src/plugins/cpptools/cppcodecompletion.cpp
parenteb9e7866f2be6e489318829c16a6bdf0fcf478f5 (diff)
downloadqt-creator-8f9e2eebe77bf709e5b6c1363e4fdbea9a561a9e.tar.gz
Added #preprocessor directive completion.
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.cpp')
-rw-r--r--src/plugins/cpptools/cppcodecompletion.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 5dfe85579c..e45d9261c6 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -523,6 +523,10 @@ static int startOfOperator(TextEditor::ITextEditable *editor,
completionKind = T_SLASH;
--start;
break;
+ case '#':
+ completionKind = T_POUND;
+ --start;
+ break;
}
if (start == pos)
@@ -678,6 +682,13 @@ int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
return m_startPosition;
}
+ // Pre-processor completion
+ if (m_completionOperator == T_POUND) {
+ completePreprocessor();
+ m_startPosition = startOfName;
+ return m_startPosition;
+ }
+
// Include completion
if (m_completionOperator == T_STRING_LITERAL
|| m_completionOperator == T_ANGLE_STRING_LITERAL
@@ -1256,6 +1267,37 @@ bool CppCodeCompletion::completeInclude(const QTextCursor &cursor)
return !m_completions.isEmpty();
}
+QStringList CppCodeCompletion::preprocessorCompletions
+ = QStringList()
+ << QLatin1String("define")
+ << QLatin1String("error")
+ << QLatin1String("include")
+ << QLatin1String("line")
+ << QLatin1String("pragma")
+ << QLatin1String("undef")
+ << QLatin1String("if")
+ << QLatin1String("ifdef")
+ << QLatin1String("ifndef")
+ << QLatin1String("elif")
+ << QLatin1String("else")
+ << QLatin1String("endif")
+ ;
+
+void CppCodeCompletion::completePreprocessor()
+{
+ TextEditor::CompletionItem item(this);
+
+ foreach (const QString &preprocessorCompletion, preprocessorCompletions) {
+ item.text = preprocessorCompletion;
+ m_completions.append(item);
+ }
+
+ if (objcKeywordsWanted()) {
+ item.text = QLatin1String("import");
+ m_completions.append(item);
+ }
+}
+
void CppCodeCompletion::completeNamespace(ClassOrNamespace *b)
{
QSet<ClassOrNamespace *> bindingsVisited;