From b19c51d609df1dad41880888e172c0751697e5bd Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Wed, 7 Apr 2010 11:29:56 +0200 Subject: [PATCH] QmlJSEditor: Highlight b in 'A on b {' as a property. Fixes 4f1d5ce19655450c2e7c23f5583116fa559d6724 Task-number: QTCREATORBUG-893 Reviewed-by: Erik Verbruggen --- src/plugins/qmljseditor/qmljshighlighter.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmljseditor/qmljshighlighter.cpp b/src/plugins/qmljseditor/qmljshighlighter.cpp index a4dc4f05c09..3ef4a8ace3d 100644 --- a/src/plugins/qmljseditor/qmljshighlighter.cpp +++ b/src/plugins/qmljseditor/qmljshighlighter.cpp @@ -147,11 +147,26 @@ void Highlighter::highlightBlock(const QString &text) if (index + 1 < tokens.size()) { const Token &nextToken = tokens.at(index + 1); + + bool maybeBinding = (index == 0 || checkStartOfBinding(tokens.at(index - 1))); + bool maybeOnBinding = false; + if (index > 0) { + const Token &previousToken = tokens.at(index - 1); + if (text.midRef(previousToken.offset, previousToken.length) == QLatin1String("on")) { + maybeOnBinding = true; + maybeBinding = false; + } + } + if (text.at(token.offset).isUpper() && (nextToken.is(Token::LeftBrace) || text.midRef(nextToken.offset, nextToken.length) == QLatin1String("on"))) { setFormat(token.offset, token.length, m_formats[TypeFormat]); - } else if (index == 0 || checkStartOfBinding(tokens.at(index - 1))) { + } else if (maybeBinding || maybeOnBinding) { + Token::Kind expectedTerminator = Token::Colon; + if (maybeOnBinding) + expectedTerminator = Token::LeftBrace; + const int start = index; ++index; // skip the identifier. @@ -161,7 +176,7 @@ void Highlighter::highlightBlock(const QString &text) index += 2; } - if (index < tokens.size() && tokens.at(index).is(Token::Colon)) { + if (index < tokens.size() && tokens.at(index).is(expectedTerminator)) { // it's a binding. for (int i = start; i < index; ++i) { const Token &tok = tokens.at(i); -- GitLab