summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libs/cplusplus/SimpleLexer.cpp5
-rw-r--r--src/libs/cplusplus/SimpleLexer.h1
-rw-r--r--src/plugins/cppeditor/cpphighlighter.cpp2
-rw-r--r--src/shared/cplusplus/Lexer.cpp2
-rw-r--r--src/shared/cplusplus/Token.cpp2
-rw-r--r--src/shared/cplusplus/Token.h6
6 files changed, 12 insertions, 6 deletions
diff --git a/src/libs/cplusplus/SimpleLexer.cpp b/src/libs/cplusplus/SimpleLexer.cpp
index f131c9de98..93b93ec73c 100644
--- a/src/libs/cplusplus/SimpleLexer.cpp
+++ b/src/libs/cplusplus/SimpleLexer.cpp
@@ -55,6 +55,11 @@ bool SimpleToken::isComment() const
return _kind == T_COMMENT || _kind == T_DOXY_COMMENT;
}
+bool SimpleToken::isObjCAtKeyword() const
+{
+ return _kind >= T_FIRST_LITERAL && _kind <= T_LAST_OBJC_AT_KEYWORD;
+}
+
SimpleLexer::SimpleLexer()
: _lastState(0),
_skipComments(false),
diff --git a/src/libs/cplusplus/SimpleLexer.h b/src/libs/cplusplus/SimpleLexer.h
index 669b4c0045..872a236fd8 100644
--- a/src/libs/cplusplus/SimpleLexer.h
+++ b/src/libs/cplusplus/SimpleLexer.h
@@ -79,6 +79,7 @@ public:
bool isOperator() const;
bool isKeyword() const;
bool isComment() const;
+ bool isObjCAtKeyword() const;
public:
int _kind;
diff --git a/src/plugins/cppeditor/cpphighlighter.cpp b/src/plugins/cppeditor/cpphighlighter.cpp
index 2f016c4d37..20be805d54 100644
--- a/src/plugins/cppeditor/cpphighlighter.cpp
+++ b/src/plugins/cppeditor/cpphighlighter.cpp
@@ -157,7 +157,7 @@ void CppHighlighter::highlightBlock(const QString &text)
initialState = 0;
}
- } else if (tk.isKeyword() || isQtKeyword(tk.text()))
+ } else if (tk.isKeyword() || isQtKeyword(tk.text()) || tk.isObjCAtKeyword())
setFormat(tk.position(), tk.length(), m_formats[CppKeywordFormat]);
else if (tk.isOperator())
diff --git a/src/shared/cplusplus/Lexer.cpp b/src/shared/cplusplus/Lexer.cpp
index 2229b470bd..5f727ef4af 100644
--- a/src/shared/cplusplus/Lexer.cpp
+++ b/src/shared/cplusplus/Lexer.cpp
@@ -598,7 +598,7 @@ void Lexer::scan_helper(Token *tok)
do {
yyinp();
- if (! isalnum(_yychar))
+ if (! (isalnum(_yychar) || _yychar == '_'))
break;
} while (_yychar);
diff --git a/src/shared/cplusplus/Token.cpp b/src/shared/cplusplus/Token.cpp
index bda5ecc583..828da8da31 100644
--- a/src/shared/cplusplus/Token.cpp
+++ b/src/shared/cplusplus/Token.cpp
@@ -56,7 +56,7 @@ static const char *token_names[] = {
("<comment>"), ("<doxy comment>"),
- ("<identifier>"), ("<int literal>"), ("<float literal>"), ("<char literal>"),
+ ("<identifier>"), ("<numeric literal>"), ("<char literal>"),
("<wide char literal>"), ("<string literal>"), ("<wide char literal>"),
("<@string literal>"), ("<angle string literal>"),
diff --git a/src/shared/cplusplus/Token.h b/src/shared/cplusplus/Token.h
index 99b986c7ab..6809468a1a 100644
--- a/src/shared/cplusplus/Token.h
+++ b/src/shared/cplusplus/Token.h
@@ -224,9 +224,9 @@ enum Kind {
T_AT_THROW,
T_AT_TRY,
- T_LAST_OBJC_AT_KEYWORD,
+ T_LAST_OBJC_AT_KEYWORD = T_AT_TRY,
- T_FIRST_QT_KEYWORD = T_LAST_OBJC_AT_KEYWORD,
+ T_FIRST_QT_KEYWORD,
// Qt keywords
T_SIGNAL = T_FIRST_QT_KEYWORD,
@@ -300,7 +300,7 @@ public:
{ return kind == T_COMMENT || kind == T_DOXY_COMMENT; }
inline bool isObjCAtKeyword() const
- { return kind >= T_FIRST_OBJC_AT_KEYWORD && kind < T_LAST_OBJC_AT_KEYWORD; }
+ { return kind >= T_FIRST_OBJC_AT_KEYWORD && kind <= T_LAST_OBJC_AT_KEYWORD; }
static const char *name(int kind);