From 8fb82ef792b55d9375f1f3d9c35e3bdeef370c61 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 15 Feb 2010 12:27:25 +0100 Subject: [PATCH] Merge qmljshighlighter.* with qmlhighlighter.*. --- src/libs/qmljs/qmljs-lib.pri | 6 +- src/plugins/qmljseditor/qmlhighlighter.cpp | 108 -------------- src/plugins/qmljseditor/qmlhighlighter.h | 64 -------- src/plugins/qmljseditor/qmljseditor.cpp | 33 ++++- src/plugins/qmljseditor/qmljseditor.h | 4 +- src/plugins/qmljseditor/qmljseditor.pro | 4 +- src/plugins/qmljseditor/qmljseditorplugin.cpp | 2 +- .../qmljseditor}/qmljshighlighter.cpp | 138 ++++++++++++------ .../qmljseditor}/qmljshighlighter.h | 66 ++++++--- 9 files changed, 171 insertions(+), 254 deletions(-) delete mode 100644 src/plugins/qmljseditor/qmlhighlighter.cpp delete mode 100644 src/plugins/qmljseditor/qmlhighlighter.h rename src/{libs/qmljs => plugins/qmljseditor}/qmljshighlighter.cpp (73%) rename src/{libs/qmljs => plugins/qmljseditor}/qmljshighlighter.h (62%) diff --git a/src/libs/qmljs/qmljs-lib.pri b/src/libs/qmljs/qmljs-lib.pri index 72d9af5b9b2..c0a786c56cc 100644 --- a/src/libs/qmljs/qmljs-lib.pri +++ b/src/libs/qmljs/qmljs-lib.pri @@ -6,8 +6,6 @@ contains(CONFIG, dll) { include(parser/parser.pri) -DEFINES += QSCRIPTHIGHLIGHTER_BUILD_LIB - DEPENDPATH += $$PWD INCLUDEPATH += $$PWD/.. @@ -36,6 +34,6 @@ contains(QT_CONFIG, declarative) { } contains(QT, gui) { - SOURCES += $$PWD/qmljshighlighter.cpp $$PWD/qmljsindenter.cpp - HEADERS += $$PWD/qmljshighlighter.h $$PWD/qmljsindenter.h + SOURCES += $$PWD/qmljsindenter.cpp + HEADERS += $$PWD/qmljsindenter.h } diff --git a/src/plugins/qmljseditor/qmlhighlighter.cpp b/src/plugins/qmljseditor/qmlhighlighter.cpp deleted file mode 100644 index 2c431407a57..00000000000 --- a/src/plugins/qmljseditor/qmlhighlighter.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "qmlhighlighter.h" - -#include <utils/qtcassert.h> - -using namespace QmlJSEditor; -using namespace QmlJSEditor::Internal; - -QmlHighlighter::QmlHighlighter(QTextDocument *parent) : - QmlJS::QScriptHighlighter(true, parent) -{ - m_currentBlockParentheses.reserve(20); - m_braceDepth = 0; -} - -int QmlHighlighter::onBlockStart() -{ - m_currentBlockParentheses.clear(); - m_braceDepth = 0; - - int state = 0; - int previousState = previousBlockState(); - if (previousState != -1) { - state = previousState & 0xff; - m_braceDepth = previousState >> 8; - } - - return state; -} - -void QmlHighlighter::onOpeningParenthesis(QChar parenthesis, int pos) -{ - if (parenthesis == QLatin1Char('{') - || parenthesis == QLatin1Char('[')) - ++m_braceDepth; - m_currentBlockParentheses.push_back(Parenthesis(Parenthesis::Opened, parenthesis, pos)); -} - -void QmlHighlighter::onClosingParenthesis(QChar parenthesis, int pos) -{ - if (parenthesis == QLatin1Char('}') - || parenthesis == QLatin1Char(']')) - --m_braceDepth; - m_currentBlockParentheses.push_back(Parenthesis(Parenthesis::Closed, parenthesis, pos)); -} - -void QmlHighlighter::onBlockEnd(int state, int firstNonSpace) -{ - typedef TextEditor::TextBlockUserData TextEditorBlockData; - - setCurrentBlockState((m_braceDepth << 8) | state); - - // Set block data parentheses. Force creation of block data unless empty - TextEditorBlockData *blockData = 0; - - if (QTextBlockUserData *userData = currentBlockUserData()) - blockData = static_cast<TextEditorBlockData *>(userData); - - if (!blockData && !m_currentBlockParentheses.empty()) { - blockData = new TextEditorBlockData; - setCurrentBlockUserData(blockData); - } - if (blockData) { - blockData->setParentheses(m_currentBlockParentheses); - blockData->setClosingCollapseMode(TextEditor::TextBlockUserData::NoClosingCollapse); - blockData->setCollapseMode(TextEditor::TextBlockUserData::NoCollapse); - } - if (!m_currentBlockParentheses.isEmpty()) { - QTC_ASSERT(blockData, return); - int collapse = Parenthesis::collapseAtPos(m_currentBlockParentheses); - if (collapse >= 0) { - if (collapse == firstNonSpace) - blockData->setCollapseMode(TextEditor::TextBlockUserData::CollapseThis); - else - blockData->setCollapseMode(TextEditor::TextBlockUserData::CollapseAfter); - } - if (Parenthesis::hasClosingCollapse(m_currentBlockParentheses)) - blockData->setClosingCollapseMode(TextEditor::TextBlockUserData::NoClosingCollapse); - } -} diff --git a/src/plugins/qmljseditor/qmlhighlighter.h b/src/plugins/qmljseditor/qmlhighlighter.h deleted file mode 100644 index 4b8c10c4d4c..00000000000 --- a/src/plugins/qmljseditor/qmlhighlighter.h +++ /dev/null @@ -1,64 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#ifndef QMLSYNTAXHIGHLIGHTER_H -#define QMLSYNTAXHIGHLIGHTER_H - -#include <qmljs/qmljshighlighter.h> -#include <texteditor/basetexteditor.h> - -namespace QmlJSEditor { -namespace Internal { - -// Highlighter for Scripts that stores -// the parentheses encountered in the block data -// for parentheses matching to work. - -class QmlHighlighter : public QmlJS::QScriptHighlighter -{ - Q_OBJECT -public: - QmlHighlighter(QTextDocument *parent = 0); - -private: - virtual int onBlockStart(); - virtual void onOpeningParenthesis(QChar parenthesis, int pos); - virtual void onClosingParenthesis(QChar parenthesis, int pos); - virtual void onBlockEnd(int state, int firstNonSpace); - - typedef TextEditor::Parenthesis Parenthesis; - typedef TextEditor::Parentheses Parentheses; - Parentheses m_currentBlockParentheses; - int m_braceDepth; -}; - -} // namespace Internal -} // namespace QmlJSEditor - -#endif // QMLSYNTAXHIGHLIGHTER_H diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 2c17321c4bc..7428113f0a0 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -29,7 +29,7 @@ #include "qmljseditor.h" #include "qmljseditorconstants.h" -#include "qmlhighlighter.h" +#include "qmljshighlighter.h" #include "qmljseditorplugin.h" #include "qmlmodelmanager.h" @@ -581,7 +581,7 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) : connect(this, SIGNAL(textChanged()), this, SLOT(updateDocument())); connect(this, SIGNAL(textChanged()), this, SLOT(updateUses())); - baseTextDocument()->setSyntaxHighlighter(new QmlHighlighter); + baseTextDocument()->setSyntaxHighlighter(new Highlighter(document())); m_modelManager = ExtensionSystem::PluginManager::instance()->getObject<QmlModelManagerInterface>(); @@ -810,29 +810,48 @@ void QmlJSTextEditor::renameIdUnderCursor() void QmlJSTextEditor::setFontSettings(const TextEditor::FontSettings &fs) { TextEditor::BaseTextEditor::setFontSettings(fs); - QmlHighlighter *highlighter = qobject_cast<QmlHighlighter*>(baseTextDocument()->syntaxHighlighter()); + Highlighter *highlighter = qobject_cast<Highlighter*>(baseTextDocument()->syntaxHighlighter()); if (!highlighter) return; + /* + NumberFormat, + StringFormat, + TypeFormat, + KeywordFormat, + LabelFormat, + CommentFormat, + VisualWhitespace, + */ static QVector<QString> categories; if (categories.isEmpty()) { categories << QLatin1String(TextEditor::Constants::C_NUMBER) << QLatin1String(TextEditor::Constants::C_STRING) << QLatin1String(TextEditor::Constants::C_TYPE) << QLatin1String(TextEditor::Constants::C_KEYWORD) - << QLatin1String(TextEditor::Constants::C_PREPROCESSOR) << QLatin1String(TextEditor::Constants::C_LABEL) << QLatin1String(TextEditor::Constants::C_COMMENT) << QLatin1String(TextEditor::Constants::C_VISUAL_WHITESPACE); } + const QVector<QTextCharFormat> formats = fs.toTextCharFormats(categories); + highlighter->setFormats(formats.constBegin(), formats.constEnd()); + highlighter->rehighlight(); + m_occurrencesFormat = fs.toTextCharFormat(QLatin1String(TextEditor::Constants::C_OCCURRENCES)); + m_occurrencesUnusedFormat = fs.toTextCharFormat(QLatin1String(TextEditor::Constants::C_OCCURRENCES_UNUSED)); + m_occurrencesUnusedFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline); + m_occurrencesUnusedFormat.setUnderlineColor(m_occurrencesUnusedFormat.foreground().color()); + m_occurrencesUnusedFormat.clearForeground(); + m_occurrencesUnusedFormat.setToolTip(tr("Unused variable")); + m_occurrenceRenameFormat = fs.toTextCharFormat(QLatin1String(TextEditor::Constants::C_OCCURRENCES_RENAME)); + + // only set the background, we do not want to modify foreground properties set by the syntax highlighter or the link m_occurrencesFormat.clearForeground(); - - highlighter->setFormats(fs.toTextCharFormats(categories)); - highlighter->rehighlight(); + m_occurrenceRenameFormat.clearForeground(); } + QString QmlJSTextEditor::wordUnderCursor() const { QTextCursor tc = textCursor(); diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h index da3458269cc..82465f9839f 100644 --- a/src/plugins/qmljseditor/qmljseditor.h +++ b/src/plugins/qmljseditor/qmljseditor.h @@ -49,7 +49,7 @@ class QmlModelManagerInterface; namespace Internal { -class QmlHighlighter; +class Highlighter; class QmlJSTextEditor; class QmlJSEditorEditable : public TextEditor::BaseTextEditorEditable @@ -180,6 +180,8 @@ private: QComboBox *m_methodCombo; QmlModelManagerInterface *m_modelManager; QTextCharFormat m_occurrencesFormat; + QTextCharFormat m_occurrencesUnusedFormat; + QTextCharFormat m_occurrenceRenameFormat; SemanticInfo m_semanticInfo; }; diff --git a/src/plugins/qmljseditor/qmljseditor.pro b/src/plugins/qmljseditor/qmljseditor.pro index d2149939f8c..f6c39877ea3 100644 --- a/src/plugins/qmljseditor/qmljseditor.pro +++ b/src/plugins/qmljseditor/qmljseditor.pro @@ -18,7 +18,7 @@ HEADERS += \ qmljseditorplugin.h \ qmlexpressionundercursor.h \ qmlfilewizard.h \ - qmlhighlighter.h \ + qmljshighlighter.h \ qmlhoverhandler.h \ qmlmodelmanager.h \ qmlmodelmanagerinterface.h @@ -31,7 +31,7 @@ SOURCES += \ qmljseditorplugin.cpp \ qmlexpressionundercursor.cpp \ qmlfilewizard.cpp \ - qmlhighlighter.cpp \ + qmljshighlighter.cpp \ qmlhoverhandler.cpp \ qmlmodelmanager.cpp \ qmlmodelmanagerinterface.cpp diff --git a/src/plugins/qmljseditor/qmljseditorplugin.cpp b/src/plugins/qmljseditor/qmljseditorplugin.cpp index 7df0321ea7e..38cb76457fc 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.cpp +++ b/src/plugins/qmljseditor/qmljseditorplugin.cpp @@ -29,7 +29,7 @@ #include "qmljseditorplugin.h" -#include "qmlhighlighter.h" +#include "qmljshighlighter.h" #include "qmljseditor.h" #include "qmljseditorconstants.h" #include "qmljseditorfactory.h" diff --git a/src/libs/qmljs/qmljshighlighter.cpp b/src/plugins/qmljseditor/qmljshighlighter.cpp similarity index 73% rename from src/libs/qmljs/qmljshighlighter.cpp rename to src/plugins/qmljseditor/qmljshighlighter.cpp index ff5f665e238..4470f122165 100644 --- a/src/libs/qmljs/qmljshighlighter.cpp +++ b/src/plugins/qmljseditor/qmljshighlighter.cpp @@ -27,37 +27,41 @@ ** **************************************************************************/ -#include <qmljs/qmljshighlighter.h> +#include "qmljshighlighter.h" #include <QtCore/QSet> #include <QtCore/QtAlgorithms> #include <QtCore/QDebug> +#include <utils/qtcassert.h> + +using namespace QmlJSEditor; +using namespace QmlJSEditor::Internal; using namespace QmlJS; -QScriptHighlighter::QScriptHighlighter(bool duiEnabled, QTextDocument *parent): - QSyntaxHighlighter(parent), - m_duiEnabled(duiEnabled) +Highlighter::Highlighter(QTextDocument *parent) + : QSyntaxHighlighter(parent), + m_qmlEnabled(true) +{ + m_currentBlockParentheses.reserve(20); + m_braceDepth = 0; +} + +Highlighter::~Highlighter() { - QVector<QTextCharFormat> rc; - rc.resize(NumFormats); - rc[NumberFormat].setForeground(Qt::blue); - rc[StringFormat].setForeground(Qt::darkGreen); - rc[TypeFormat].setForeground(Qt::darkMagenta); - rc[KeywordFormat].setForeground(Qt::darkYellow); - rc[LabelFormat].setForeground(Qt::darkRed); - rc[CommentFormat].setForeground(Qt::red); rc[CommentFormat].setFontItalic(true); - rc[PreProcessorFormat].setForeground(Qt::darkBlue); - rc[VisualWhitespace].setForeground(Qt::lightGray); // for debug: rc[VisualWhitespace].setBackground(Qt::red); - setFormats(rc); } -bool QScriptHighlighter::isDuiEnabled() const +bool Highlighter::isQmlEnabled() const { - return m_duiEnabled; + return m_qmlEnabled; } -QTextCharFormat QScriptHighlighter::labelTextCharFormat() const +void Highlighter::setQmlEnabled(bool qmlEnabled) +{ + m_qmlEnabled = qmlEnabled; +} + +QTextCharFormat Highlighter::labelTextCharFormat() const { return m_formats[LabelFormat]; } @@ -77,7 +81,7 @@ static bool checkStartOfBinding(const Token &token) } // end of switch } -void QScriptHighlighter::highlightBlock(const QString &text) +void Highlighter::highlightBlock(const QString &text) { const QList<Token> tokens = m_scanner(text, onBlockStart()); @@ -125,7 +129,7 @@ void QScriptHighlighter::highlightBlock(const QString &text) case Token::Identifier: { const QStringRef spell = text.midRef(token.offset, token.length); - if (m_duiEnabled && maybeQmlKeyword(spell)) { + if (m_qmlEnabled && maybeQmlKeyword(spell)) { // check the previous token if (index == 0 || tokens.at(index - 1).isNot(Token::Dot)) { if (index + 1 == tokens.size() || tokens.at(index + 1).isNot(Token::Colon)) { @@ -133,7 +137,7 @@ void QScriptHighlighter::highlightBlock(const QString &text) break; } } - } else if (m_duiEnabled && index > 0 && maybeQmlBuiltinType(spell)) { + } else if (m_qmlEnabled && index > 0 && maybeQmlBuiltinType(spell)) { const Token &previousToken = tokens.at(index - 1); if (previousToken.is(Token::Identifier) && text.at(previousToken.offset) == QLatin1Char('p') && text.midRef(previousToken.offset, previousToken.length) == QLatin1String("property")) { @@ -219,30 +223,7 @@ void QScriptHighlighter::highlightBlock(const QString &text) onBlockEnd(m_scanner.state(), firstNonSpace); } -void QScriptHighlighter::setFormats(const QVector<QTextCharFormat> &s) -{ - Q_ASSERT(s.size() == NumFormats); - qCopy(s.constBegin(), s.constEnd(), m_formats); -} - -int QScriptHighlighter::onBlockStart() -{ - return currentBlockState(); -} - -void QScriptHighlighter::onBlockEnd(int, int) -{ -} - -void QScriptHighlighter::onOpeningParenthesis(QChar, int) -{ -} - -void QScriptHighlighter::onClosingParenthesis(QChar, int) -{ -} - -bool QScriptHighlighter::maybeQmlKeyword(const QStringRef &text) const +bool Highlighter::maybeQmlKeyword(const QStringRef &text) const { if (text.isEmpty()) return false; @@ -265,7 +246,7 @@ bool QScriptHighlighter::maybeQmlKeyword(const QStringRef &text) const } } -bool QScriptHighlighter::maybeQmlBuiltinType(const QStringRef &text) const +bool Highlighter::maybeQmlBuiltinType(const QStringRef &text) const { if (text.isEmpty()) return false; @@ -296,3 +277,68 @@ bool QScriptHighlighter::maybeQmlBuiltinType(const QStringRef &text) const return false; } } + +int Highlighter::onBlockStart() +{ + m_currentBlockParentheses.clear(); + m_braceDepth = 0; + + int state = 0; + int previousState = previousBlockState(); + if (previousState != -1) { + state = previousState & 0xff; + m_braceDepth = previousState >> 8; + } + + return state; +} + +void Highlighter::onBlockEnd(int state, int firstNonSpace) +{ + typedef TextEditor::TextBlockUserData TextEditorBlockData; + + setCurrentBlockState((m_braceDepth << 8) | state); + + // Set block data parentheses. Force creation of block data unless empty + TextEditorBlockData *blockData = 0; + + if (QTextBlockUserData *userData = currentBlockUserData()) + blockData = static_cast<TextEditorBlockData *>(userData); + + if (!blockData && !m_currentBlockParentheses.empty()) { + blockData = new TextEditorBlockData; + setCurrentBlockUserData(blockData); + } + if (blockData) { + blockData->setParentheses(m_currentBlockParentheses); + blockData->setClosingCollapseMode(TextEditor::TextBlockUserData::NoClosingCollapse); + blockData->setCollapseMode(TextEditor::TextBlockUserData::NoCollapse); + } + if (!m_currentBlockParentheses.isEmpty()) { + QTC_ASSERT(blockData, return); + int collapse = Parenthesis::collapseAtPos(m_currentBlockParentheses); + if (collapse >= 0) { + if (collapse == firstNonSpace) + blockData->setCollapseMode(TextEditor::TextBlockUserData::CollapseThis); + else + blockData->setCollapseMode(TextEditor::TextBlockUserData::CollapseAfter); + } + if (Parenthesis::hasClosingCollapse(m_currentBlockParentheses)) + blockData->setClosingCollapseMode(TextEditor::TextBlockUserData::NoClosingCollapse); + } +} + +void Highlighter::onOpeningParenthesis(QChar parenthesis, int pos) +{ + if (parenthesis == QLatin1Char('{') || parenthesis == QLatin1Char('[')) + ++m_braceDepth; + m_currentBlockParentheses.push_back(Parenthesis(Parenthesis::Opened, parenthesis, pos)); +} + +void Highlighter::onClosingParenthesis(QChar parenthesis, int pos) +{ + if (parenthesis == QLatin1Char('}') || parenthesis == QLatin1Char(']')) + --m_braceDepth; + m_currentBlockParentheses.push_back(Parenthesis(Parenthesis::Closed, parenthesis, pos)); +} + diff --git a/src/libs/qmljs/qmljshighlighter.h b/src/plugins/qmljseditor/qmljshighlighter.h similarity index 62% rename from src/libs/qmljs/qmljshighlighter.h rename to src/plugins/qmljseditor/qmljshighlighter.h index d5bf0347e24..68c2a1e472c 100644 --- a/src/libs/qmljs/qmljshighlighter.h +++ b/src/plugins/qmljseditor/qmljshighlighter.h @@ -36,47 +36,71 @@ #include <QtCore/QSet> #include <QtGui/QSyntaxHighlighter> -namespace QmlJS { +#include <texteditor/basetexteditor.h> -class QMLJS_EXPORT QScriptHighlighter : public QSyntaxHighlighter +namespace QmlJSEditor { +namespace Internal { + +class Highlighter : public QSyntaxHighlighter { Q_OBJECT -public: - QScriptHighlighter(bool duiEnabled = false, QTextDocument *parent = 0); - virtual void highlightBlock(const QString &text); - enum { NumberFormat, StringFormat, TypeFormat, - KeywordFormat, PreProcessorFormat, LabelFormat, CommentFormat, - VisualWhitespace, - NumFormats }; - - bool isDuiEnabled() const; +public: + Highlighter(QTextDocument *parent = 0); + virtual ~Highlighter(); + + enum { + NumberFormat, + StringFormat, + TypeFormat, + KeywordFormat, + LabelFormat, + CommentFormat, + VisualWhitespace, + NumFormats + }; + + bool isQmlEnabled() const; + void setQmlEnabled(bool duiEnabled); // MS VC 6 compatible, still. - void setFormats(const QVector<QTextCharFormat> &s); + // Set formats from a sequence of type QTextCharFormat + template <class InputIterator> + void setFormats(InputIterator begin, InputIterator end) + { + qCopy(begin, end, m_formats); + } QTextCharFormat labelTextCharFormat() const; protected: - virtual int onBlockStart(); - virtual void onBlockEnd(int state, int firstNonSpace); + virtual void highlightBlock(const QString &text); + + int onBlockStart(); + void onBlockEnd(int state, int firstNonSpace); // The functions are notified whenever parentheses are encountered. // Custom behaviour can be added, for example storing info for indenting. - virtual void onOpeningParenthesis(QChar parenthesis, int pos); - virtual void onClosingParenthesis(QChar parenthesis, int pos); + void onOpeningParenthesis(QChar parenthesis, int pos); + void onClosingParenthesis(QChar parenthesis, int pos); bool maybeQmlKeyword(const QStringRef &text) const; bool maybeQmlBuiltinType(const QStringRef &text) const; -protected: - QmlJSScanner m_scanner; - private: + typedef TextEditor::Parenthesis Parenthesis; + typedef TextEditor::Parentheses Parentheses; + + bool m_qmlEnabled; + int m_braceDepth; + + QmlJS::QmlJSScanner m_scanner; + Parentheses m_currentBlockParentheses; + QTextCharFormat m_formats[NumFormats]; - bool m_duiEnabled; }; -} // namespace QmlJS +} // end of namespace Internal +} // end of namespace QmlJSEditor #endif // QSCRIPTSYNTAXHIGHLIGHTER_H -- GitLab