summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/bazaar/annotationhighlighter.cpp3
-rw-r--r--src/plugins/bazaar/annotationhighlighter.h2
-rw-r--r--src/plugins/bazaar/bazaareditor.cpp6
-rw-r--r--src/plugins/bazaar/bazaareditor.h2
-rw-r--r--src/plugins/clearcase/annotationhighlighter.cpp3
-rw-r--r--src/plugins/clearcase/annotationhighlighter.h2
-rw-r--r--src/plugins/clearcase/clearcaseeditor.cpp6
-rw-r--r--src/plugins/clearcase/clearcaseeditor.h2
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeeditor.cpp23
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeeditor.h1
-rw-r--r--src/plugins/cmakeprojectmanager/cmakehighlighter.cpp29
-rw-r--r--src/plugins/cmakeprojectmanager/cmakehighlighter.h15
-rw-r--r--src/plugins/cppeditor/cppeditor.cpp6
-rw-r--r--src/plugins/cppeditor/cpphighlighter.cpp51
-rw-r--r--src/plugins/cppeditor/cpphighlighter.h10
-rw-r--r--src/plugins/cppeditor/cppsnippetprovider.cpp9
-rw-r--r--src/plugins/cvs/annotationhighlighter.cpp3
-rw-r--r--src/plugins/cvs/annotationhighlighter.h2
-rw-r--r--src/plugins/cvs/cvseditor.cpp5
-rw-r--r--src/plugins/cvs/cvseditor.h2
-rw-r--r--src/plugins/git/annotationhighlighter.cpp3
-rw-r--r--src/plugins/git/annotationhighlighter.h2
-rw-r--r--src/plugins/git/giteditor.cpp5
-rw-r--r--src/plugins/git/giteditor.h2
-rw-r--r--src/plugins/git/githighlighters.cpp64
-rw-r--r--src/plugins/git/githighlighters.h25
-rw-r--r--src/plugins/glsleditor/glsleditor.cpp40
-rw-r--r--src/plugins/glsleditor/glsleditor.h3
-rw-r--r--src/plugins/glsleditor/glslhighlighter.cpp47
-rw-r--r--src/plugins/glsleditor/glslhighlighter.h5
-rw-r--r--src/plugins/mercurial/annotationhighlighter.cpp3
-rw-r--r--src/plugins/mercurial/annotationhighlighter.h2
-rw-r--r--src/plugins/mercurial/mercurialeditor.cpp5
-rw-r--r--src/plugins/mercurial/mercurialeditor.h2
-rw-r--r--src/plugins/perforce/annotationhighlighter.cpp3
-rw-r--r--src/plugins/perforce/annotationhighlighter.h1
-rw-r--r--src/plugins/perforce/perforceeditor.cpp5
-rw-r--r--src/plugins/perforce/perforceeditor.h2
-rw-r--r--src/plugins/pythoneditor/tools/pythonhighlighter.cpp56
-rw-r--r--src/plugins/pythoneditor/tools/pythonhighlighter.h5
-rw-r--r--src/plugins/qmljseditor/qmljseditor.cpp6
-rw-r--r--src/plugins/qmljseditor/qmljshighlighter.cpp39
-rw-r--r--src/plugins/qmljseditor/qmljshighlighter.h8
-rw-r--r--src/plugins/qmljseditor/qmljssnippetprovider.cpp6
-rw-r--r--src/plugins/qt4projectmanager/profileeditor.cpp19
-rw-r--r--src/plugins/qt4projectmanager/profileeditor.h3
-rw-r--r--src/plugins/qt4projectmanager/profilehighlighter.cpp23
-rw-r--r--src/plugins/qt4projectmanager/profilehighlighter.h7
-rw-r--r--src/plugins/subversion/annotationhighlighter.cpp3
-rw-r--r--src/plugins/subversion/annotationhighlighter.h2
-rw-r--r--src/plugins/subversion/subversioneditor.cpp5
-rw-r--r--src/plugins/subversion/subversioneditor.h2
-rw-r--r--src/plugins/texteditor/basetexteditor.cpp6
-rw-r--r--src/plugins/texteditor/generichighlighter/highlighter.cpp84
-rw-r--r--src/plugins/texteditor/generichighlighter/highlighter.h4
-rw-r--r--src/plugins/texteditor/plaintexteditor.cpp27
-rw-r--r--src/plugins/texteditor/plaintexteditor.h1
-rw-r--r--src/plugins/texteditor/syntaxhighlighter.cpp34
-rw-r--r--src/plugins/texteditor/syntaxhighlighter.h7
-rw-r--r--src/plugins/vcsbase/baseannotationhighlighter.cpp50
-rw-r--r--src/plugins/vcsbase/baseannotationhighlighter.h9
-rw-r--r--src/plugins/vcsbase/diffhighlighter.cpp86
-rw-r--r--src/plugins/vcsbase/diffhighlighter.h9
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.cpp32
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.h6
65 files changed, 425 insertions, 515 deletions
diff --git a/src/plugins/bazaar/annotationhighlighter.cpp b/src/plugins/bazaar/annotationhighlighter.cpp
index 7fcbc2a124..0d8aaac4eb 100644
--- a/src/plugins/bazaar/annotationhighlighter.cpp
+++ b/src/plugins/bazaar/annotationhighlighter.cpp
@@ -33,9 +33,8 @@ using namespace Bazaar::Internal;
using namespace Bazaar;
BazaarAnnotationHighlighter::BazaarAnnotationHighlighter(const ChangeNumbers &changeNumbers,
- const QColor &bg,
QTextDocument *document)
- : VcsBase::BaseAnnotationHighlighter(changeNumbers, bg, document),
+ : VcsBase::BaseAnnotationHighlighter(changeNumbers, document),
m_changeset(QLatin1String(Constants::ANNOTATE_CHANGESET_ID))
{
}
diff --git a/src/plugins/bazaar/annotationhighlighter.h b/src/plugins/bazaar/annotationhighlighter.h
index ff39440286..5c55eff87b 100644
--- a/src/plugins/bazaar/annotationhighlighter.h
+++ b/src/plugins/bazaar/annotationhighlighter.h
@@ -38,7 +38,7 @@ namespace Internal {
class BazaarAnnotationHighlighter : public VcsBase::BaseAnnotationHighlighter
{
public:
- explicit BazaarAnnotationHighlighter(const ChangeNumbers &changeNumbers, const QColor &bg,
+ explicit BazaarAnnotationHighlighter(const ChangeNumbers &changeNumbers,
QTextDocument *document = 0);
private:
diff --git a/src/plugins/bazaar/bazaareditor.cpp b/src/plugins/bazaar/bazaareditor.cpp
index 917f819dd3..70acb54038 100644
--- a/src/plugins/bazaar/bazaareditor.cpp
+++ b/src/plugins/bazaar/bazaareditor.cpp
@@ -35,7 +35,6 @@
#include <QRegExp>
#include <QString>
#include <QTextCursor>
-#include <QDebug>
#define BZR_CHANGE_PATTERN "[0-9]+"
@@ -107,8 +106,7 @@ QString BazaarEditor::changeUnderCursor(const QTextCursor &cursorIn) const
return QString();
}
-VcsBase::BaseAnnotationHighlighter *BazaarEditor::createAnnotationHighlighter(const QSet<QString> &changes,
- const QColor &bg) const
+VcsBase::BaseAnnotationHighlighter *BazaarEditor::createAnnotationHighlighter(const QSet<QString> &changes) const
{
- return new BazaarAnnotationHighlighter(changes, bg);
+ return new BazaarAnnotationHighlighter(changes);
}
diff --git a/src/plugins/bazaar/bazaareditor.h b/src/plugins/bazaar/bazaareditor.h
index 50dca61e04..5cff890d69 100644
--- a/src/plugins/bazaar/bazaareditor.h
+++ b/src/plugins/bazaar/bazaareditor.h
@@ -46,7 +46,7 @@ public:
private:
QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &cursor) const;
- VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
+ VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const;
mutable QRegExp m_changesetId;
mutable QRegExp m_exactChangesetId;
diff --git a/src/plugins/clearcase/annotationhighlighter.cpp b/src/plugins/clearcase/annotationhighlighter.cpp
index 89ba548993..81de1b9079 100644
--- a/src/plugins/clearcase/annotationhighlighter.cpp
+++ b/src/plugins/clearcase/annotationhighlighter.cpp
@@ -34,9 +34,8 @@ using namespace ClearCase;
using namespace ClearCase::Internal;
ClearCaseAnnotationHighlighter::ClearCaseAnnotationHighlighter(const ChangeNumbers &changeNumbers,
- const QColor &bg,
QTextDocument *document) :
- VcsBase::BaseAnnotationHighlighter(changeNumbers, bg, document),
+ VcsBase::BaseAnnotationHighlighter(changeNumbers, document),
m_separator(QLatin1Char('|'))
{
}
diff --git a/src/plugins/clearcase/annotationhighlighter.h b/src/plugins/clearcase/annotationhighlighter.h
index 9792e2492e..f7e2740d3d 100644
--- a/src/plugins/clearcase/annotationhighlighter.h
+++ b/src/plugins/clearcase/annotationhighlighter.h
@@ -41,7 +41,7 @@ class ClearCaseAnnotationHighlighter : public VcsBase::BaseAnnotationHighlighter
{
Q_OBJECT
public:
- explicit ClearCaseAnnotationHighlighter(const ChangeNumbers &changeNumbers, const QColor &bg,
+ explicit ClearCaseAnnotationHighlighter(const ChangeNumbers &changeNumbers,
QTextDocument *document = 0);
private:
diff --git a/src/plugins/clearcase/clearcaseeditor.cpp b/src/plugins/clearcase/clearcaseeditor.cpp
index 99324d7ab5..04e60dfe27 100644
--- a/src/plugins/clearcase/clearcaseeditor.cpp
+++ b/src/plugins/clearcase/clearcaseeditor.cpp
@@ -36,7 +36,6 @@
#include <utils/qtcassert.h>
#include <vcsbase/diffhighlighter.h>
-#include <QDebug>
#include <QDir>
#include <QFileInfo>
#include <QTextBlock>
@@ -94,8 +93,7 @@ QString ClearCaseEditor::changeUnderCursor(const QTextCursor &c) const
return QString();
}
-VcsBase::BaseAnnotationHighlighter *ClearCaseEditor::createAnnotationHighlighter(const QSet<QString> &changes,
- const QColor &bg) const
+VcsBase::BaseAnnotationHighlighter *ClearCaseEditor::createAnnotationHighlighter(const QSet<QString> &changes) const
{
- return new ClearCaseAnnotationHighlighter(changes, bg);
+ return new ClearCaseAnnotationHighlighter(changes);
}
diff --git a/src/plugins/clearcase/clearcaseeditor.h b/src/plugins/clearcase/clearcaseeditor.h
index c9dd8c88e3..14d7031b86 100644
--- a/src/plugins/clearcase/clearcaseeditor.h
+++ b/src/plugins/clearcase/clearcaseeditor.h
@@ -49,7 +49,7 @@ public:
private:
QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const;
- VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
+ VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const;
QRegExp m_versionNumberPattern;
};
diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
index 88045e13af..e27e9f955d 100644
--- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
@@ -40,13 +40,13 @@
#include <coreplugin/actionmanager/actionmanager.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/session.h>
-#include <texteditor/fontsettings.h>
#include <texteditor/texteditoractionhandler.h>
#include <texteditor/texteditorconstants.h>
#include <texteditor/texteditorsettings.h>
#include <QFileInfo>
#include <QSharedPointer>
+#include <QTextBlock>
using namespace CMakeProjectManager;
using namespace CMakeProjectManager::Internal;
@@ -141,27 +141,6 @@ void CMakeEditorWidget::contextMenuEvent(QContextMenuEvent *e)
showDefaultContextMenu(e, Constants::M_CONTEXT);
}
-void CMakeEditorWidget::setFontSettings(const TextEditor::FontSettings &fs)
-{
- TextEditor::BaseTextEditorWidget::setFontSettings(fs);
- CMakeHighlighter *highlighter = qobject_cast<CMakeHighlighter*>(baseTextDocument()->syntaxHighlighter());
- if (!highlighter)
- return;
-
- static QVector<TextEditor::TextStyle> categories;
- if (categories.isEmpty()) {
- categories << TextEditor::C_LABEL // variables
- << TextEditor::C_KEYWORD // functions
- << TextEditor::C_COMMENT
- << TextEditor::C_STRING
- << TextEditor::C_VISUAL_WHITESPACE;
- }
-
- const QVector<QTextCharFormat> formats = fs.toTextCharFormats(categories);
- highlighter->setFormats(formats.constBegin(), formats.constEnd());
- highlighter->rehighlight();
-}
-
static bool isValidFileNameChar(const QChar &c)
{
if (c.isLetterOrNumber()
diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.h b/src/plugins/cmakeprojectmanager/cmakeeditor.h
index 5292516458..9d9f542b4b 100644
--- a/src/plugins/cmakeprojectmanager/cmakeeditor.h
+++ b/src/plugins/cmakeprojectmanager/cmakeeditor.h
@@ -85,7 +85,6 @@ protected:
public slots:
void unCommentSelection();
- void setFontSettings(const TextEditor::FontSettings &);
private:
CMakeEditorFactory *m_factory;
diff --git a/src/plugins/cmakeprojectmanager/cmakehighlighter.cpp b/src/plugins/cmakeprojectmanager/cmakehighlighter.cpp
index 8f91004c03..8231f402f4 100644
--- a/src/plugins/cmakeprojectmanager/cmakehighlighter.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakehighlighter.cpp
@@ -30,9 +30,7 @@
#include "cmakehighlighter.h"
#include <QRegExp>
-#include <QColor>
#include <QTextDocument>
-#include <QTextEdit>
using namespace CMakeProjectManager::Internal;
@@ -48,6 +46,15 @@ static bool isVariable(const QByteArray &word)
CMakeHighlighter::CMakeHighlighter(QTextDocument *document) :
TextEditor::SyntaxHighlighter(document)
{
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty()) {
+ categories << TextEditor::C_LABEL // variables
+ << TextEditor::C_KEYWORD // functions
+ << TextEditor::C_COMMENT
+ << TextEditor::C_STRING
+ << TextEditor::C_VISUAL_WHITESPACE;
+ }
+ setTextFormatCategories(categories);
}
@@ -62,12 +69,12 @@ void CMakeHighlighter::highlightBlock(const QString &text)
for (i=0; i < text.length(); i++) {
char c = text.at(i).toLatin1();
if (inCommentMode) {
- setFormat(i, 1, m_formats[CMakeCommentFormat]);
+ setFormat(i, 1, formatForCategory(CMakeCommentFormat));
} else {
if (c == '#') {
if (!inStringMode) {
inCommentMode = true;
- setFormat(i, 1, m_formats[CMakeCommentFormat]);
+ setFormat(i, 1, formatForCategory(CMakeCommentFormat));
buf.clear();
} else {
buf += c;
@@ -75,7 +82,7 @@ void CMakeHighlighter::highlightBlock(const QString &text)
} else if (c == '(') {
if (!inStringMode) {
if (!buf.isEmpty())
- setFormat(i - buf.length(), buf.length(), m_formats[CMakeFunctionFormat]);
+ setFormat(i - buf.length(), buf.length(), formatForCategory(CMakeFunctionFormat));
buf.clear();
} else {
buf += c;
@@ -88,10 +95,10 @@ void CMakeHighlighter::highlightBlock(const QString &text)
} else if (c == '\"') {
buf += c;
if (inStringMode) {
- setFormat(i + 1 - buf.length(), buf.length(), m_formats[CMakeStringFormat]);
+ setFormat(i + 1 - buf.length(), buf.length(), formatForCategory(CMakeStringFormat));
buf.clear();
} else {
- setFormat(i, 1, m_formats[CMakeStringFormat]);
+ setFormat(i, 1, formatForCategory(CMakeStringFormat));
}
inStringMode = !inStringMode;
} else if (c == '\\') {
@@ -105,14 +112,14 @@ void CMakeHighlighter::highlightBlock(const QString &text)
}
} else if (c == '$') {
if (inStringMode)
- setFormat(i - buf.length(), buf.length(), m_formats[CMakeStringFormat]);
+ setFormat(i - buf.length(), buf.length(), formatForCategory(CMakeStringFormat));
buf.clear();
buf += c;
setFormat(i, 1, emptyFormat);
} else if (c == '}') {
buf += c;
if (isVariable(buf)) {
- setFormat(i + 1 - buf.length(), buf.length(), m_formats[CMakeVariableFormat]);
+ setFormat(i + 1 - buf.length(), buf.length(), formatForCategory(CMakeVariableFormat));
buf.clear();
}
} else {
@@ -123,12 +130,12 @@ void CMakeHighlighter::highlightBlock(const QString &text)
}
if (inStringMode) {
- setFormat(i - buf.length(), buf.length(), m_formats[CMakeStringFormat]);
+ setFormat(i - buf.length(), buf.length(), formatForCategory(CMakeStringFormat));
setCurrentBlockState(1);
} else {
setCurrentBlockState(0);
}
- applyFormatToSpaces(text, m_formats[CMakeVisualWhiteSpaceFormat]);
+ applyFormatToSpaces(text, formatForCategory(CMakeVisualWhiteSpaceFormat));
}
diff --git a/src/plugins/cmakeprojectmanager/cmakehighlighter.h b/src/plugins/cmakeprojectmanager/cmakehighlighter.h
index ba6b31ac06..4cfef25a70 100644
--- a/src/plugins/cmakeprojectmanager/cmakehighlighter.h
+++ b/src/plugins/cmakeprojectmanager/cmakehighlighter.h
@@ -31,9 +31,6 @@
#define CMAKEHIGHLIGHTER_H
#include <texteditor/syntaxhighlighter.h>
-#include <QtAlgorithms>
-#include <QSyntaxHighlighter>
-#include <QTextCharFormat>
namespace CMakeProjectManager {
namespace Internal {
@@ -50,21 +47,11 @@ public:
CMakeFunctionFormat,
CMakeCommentFormat,
CMakeStringFormat,
- CMakeVisualWhiteSpaceFormat,
- NumCMakeFormats
+ CMakeVisualWhiteSpaceFormat
};
CMakeHighlighter(QTextDocument *document = 0);
virtual void highlightBlock(const QString &text);
-
- // Set formats from a sequence of type QTextCharFormat
- template <class InputIterator>
- void setFormats(InputIterator begin, InputIterator end) {
- qCopy(begin, end, m_formats);
- }
-
-private:
- QTextCharFormat m_formats[NumCMakeFormats];
};
} // namespace Internal
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 3e5cb74293..738c5544b8 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -1887,14 +1887,10 @@ const Utils::CommentDefinition *CPPEditor::commentDefinition() const
void CPPEditorWidget::setFontSettings(const TextEditor::FontSettings &fs)
{
TextEditor::BaseTextEditorWidget::setFontSettings(fs);
- CppHighlighter *highlighter
- = qobject_cast<CppHighlighter*>(baseTextDocument()->syntaxHighlighter());
+ TextEditor::SyntaxHighlighter *highlighter = baseTextDocument()->syntaxHighlighter();
if (!highlighter)
return;
- const QVector<QTextCharFormat> formats = fs.toTextCharFormats(highlighterFormatCategories());
- highlighter->setFormats(formats.constBegin(), formats.constEnd());
-
m_occurrencesFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES);
m_occurrencesUnusedFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES_UNUSED);
m_occurrencesUnusedFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline);
diff --git a/src/plugins/cppeditor/cpphighlighter.cpp b/src/plugins/cppeditor/cpphighlighter.cpp
index ce1d70845d..7e16616ed2 100644
--- a/src/plugins/cppeditor/cpphighlighter.cpp
+++ b/src/plugins/cppeditor/cpphighlighter.cpp
@@ -28,6 +28,7 @@
****************************************************************************/
#include "cpphighlighter.h"
+#include "cppeditorenums.h"
#include <cpptools/cppdoxygen.h>
#include <cpptools/cpptoolsreuse.h>
@@ -37,7 +38,6 @@
#include <cplusplus/Lexer.h>
#include <QTextDocument>
-#include <QDebug>
using namespace CppEditor::Internal;
using namespace TextEditor;
@@ -46,6 +46,21 @@ using namespace CPlusPlus;
CppHighlighter::CppHighlighter(QTextDocument *document) :
TextEditor::SyntaxHighlighter(document)
{
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty()) {
+ categories << TextEditor::C_NUMBER
+ << TextEditor::C_STRING
+ << TextEditor::C_TYPE
+ << TextEditor::C_KEYWORD
+ << TextEditor::C_OPERATOR
+ << TextEditor::C_PREPROCESSOR
+ << TextEditor::C_LABEL
+ << TextEditor::C_COMMENT
+ << TextEditor::C_DOXYGEN_COMMENT
+ << TextEditor::C_DOXYGEN_TAG
+ << TextEditor::C_VISUAL_WHITESPACE;
+ }
+ setTextFormatCategories(categories);
}
void CppHighlighter::highlightBlock(const QString &text)
@@ -80,11 +95,11 @@ void CppHighlighter::highlightBlock(const QString &text)
BaseTextDocumentLayout::clearParentheses(currentBlock());
if (text.length()) {// the empty line can still contain whitespace
if (initialState == Lexer::State_MultiLineComment)
- highlightLine(text, 0, text.length(), m_formats[CppCommentFormat]);
+ highlightLine(text, 0, text.length(), formatForCategory(CppCommentFormat));
else if (initialState == Lexer::State_MultiLineDoxyComment)
- highlightLine(text, 0, text.length(), m_formats[CppDoxygenCommentFormat]);
+ highlightLine(text, 0, text.length(), formatForCategory(CppDoxygenCommentFormat));
else
- setFormat(0, text.length(), m_formats[CppVisualWhitespace]);
+ setFormat(0, text.length(), formatForCategory(CppVisualWhitespace));
}
BaseTextDocumentLayout::setFoldingIndent(currentBlock(), foldingIndent);
return;
@@ -109,7 +124,7 @@ void CppHighlighter::highlightBlock(const QString &text)
}
if (previousTokenEnd != tk.begin())
- setFormat(previousTokenEnd, tk.begin() - previousTokenEnd, m_formats[CppVisualWhitespace]);
+ setFormat(previousTokenEnd, tk.begin() - previousTokenEnd, formatForCategory(CppVisualWhitespace));
if (tk.is(T_LPAREN) || tk.is(T_LBRACE) || tk.is(T_LBRACKET)) {
const QChar c = text.at(tk.begin());
@@ -148,11 +163,11 @@ void CppHighlighter::highlightBlock(const QString &text)
continue;
if (i == 0 && tk.is(T_POUND)) {
- highlightLine(text, tk.begin(), tk.length(), m_formats[CppPreprocessorFormat]);
+ highlightLine(text, tk.begin(), tk.length(), formatForCategory(CppPreprocessorFormat));
expectPreprocessorKeyword = true;
} else if (highlightCurrentWordAsPreprocessor &&
(tk.isKeyword() || tk.is(T_IDENTIFIER)) && isPPKeyword(text.midRef(tk.begin(), tk.length()))) {
- setFormat(tk.begin(), tk.length(), m_formats[CppPreprocessorFormat]);
+ setFormat(tk.begin(), tk.length(), formatForCategory(CppPreprocessorFormat));
const QStringRef ppKeyword = text.midRef(tk.begin(), tk.length());
if (ppKeyword == QLatin1String("error")
|| ppKeyword == QLatin1String("warning")
@@ -161,13 +176,13 @@ void CppHighlighter::highlightBlock(const QString &text)
}
} else if (tk.is(T_NUMERIC_LITERAL)) {
- setFormat(tk.begin(), tk.length(), m_formats[CppNumberFormat]);
+ setFormat(tk.begin(), tk.length(), formatForCategory(CppNumberFormat));
} else if (tk.isStringLiteral() || tk.isCharLiteral()) {
- highlightLine(text, tk.begin(), tk.length(), m_formats[CppStringFormat]);
+ highlightLine(text, tk.begin(), tk.length(), formatForCategory(CppStringFormat));
} else if (tk.isComment()) {
const int startPosition = initialState ? previousTokenEnd : tk.begin();
if (tk.is(T_COMMENT) || tk.is(T_CPP_COMMENT))
- highlightLine(text, startPosition, tk.end() - startPosition, m_formats[CppCommentFormat]);
+ highlightLine(text, startPosition, tk.end() - startPosition, formatForCategory(CppCommentFormat));
else // a doxygen comment
highlightDoxygenComment(text, startPosition, tk.end() - startPosition);
@@ -191,11 +206,11 @@ void CppHighlighter::highlightBlock(const QString &text)
}
} else if (tk.isKeyword() || CppTools::isQtKeyword(text.midRef(tk.begin(), tk.length())) || tk.isObjCAtKeyword()) {
- setFormat(tk.begin(), tk.length(), m_formats[CppKeywordFormat]);
+ setFormat(tk.begin(), tk.length(), formatForCategory(CppKeywordFormat));
} else if (tk.isOperator()) {
- setFormat(tk.begin(), tk.length(), m_formats[CppOperatorFormat]);
+ setFormat(tk.begin(), tk.length(), formatForCategory(CppOperatorFormat));
} else if (i == 0 && tokens.size() > 1 && tk.is(T_IDENTIFIER) && tokens.at(1).is(T_COLON)) {
- setFormat(tk.begin(), tk.length(), m_formats[CppLabelFormat]);
+ setFormat(tk.begin(), tk.length(), formatForCategory(CppLabelFormat));
} else if (tk.is(T_IDENTIFIER)) {
highlightWord(text.midRef(tk.begin(), tk.length()), tk.begin(), tk.length());
}
@@ -204,7 +219,7 @@ void CppHighlighter::highlightBlock(const QString &text)
// mark the trailing white spaces
const int lastTokenEnd = tokens.last().end();
if (text.length() > lastTokenEnd)
- highlightLine(text, lastTokenEnd, text.length() - lastTokenEnd, m_formats[CppVisualWhitespace]);
+ highlightLine(text, lastTokenEnd, text.length() - lastTokenEnd, formatForCategory(CppVisualWhitespace));
if (!initialState && state && !tokens.isEmpty()) {
parentheses.append(Parenthesis(Parenthesis::Opened, QLatin1Char('+'),
@@ -326,7 +341,7 @@ bool CppHighlighter::isPPKeyword(const QStringRef &text) const
void CppHighlighter::highlightLine(const QString &text, int position, int length,
const QTextCharFormat &format)
{
- QTextCharFormat visualSpaceFormat = m_formats[CppVisualWhitespace];
+ QTextCharFormat visualSpaceFormat = formatForCategory(CppVisualWhitespace);
visualSpaceFormat.setBackground(format.background());
const int end = position + length;
@@ -360,7 +375,7 @@ void CppHighlighter::highlightWord(QStringRef word, int position, int length)
return;
}
- setFormat(position, length, m_formats[CppTypeFormat]);
+ setFormat(position, length, formatForCategory(CppTypeFormat));
}
}
}
@@ -372,8 +387,8 @@ void CppHighlighter::highlightDoxygenComment(const QString &text, int position,
const QChar *uc = text.unicode();
const QChar *it = uc + position;
- const QTextCharFormat &format = m_formats[CppDoxygenCommentFormat];
- const QTextCharFormat &kwFormat = m_formats[CppDoxygenTagFormat];
+ const QTextCharFormat &format = formatForCategory(CppDoxygenCommentFormat);
+ const QTextCharFormat &kwFormat = formatForCategory(CppDoxygenTagFormat);
while (!it->isNull()) {
if (it->unicode() == QLatin1Char('\\') ||
diff --git a/src/plugins/cppeditor/cpphighlighter.h b/src/plugins/cppeditor/cpphighlighter.h
index 9e38897c29..e697783559 100644
--- a/src/plugins/cppeditor/cpphighlighter.h
+++ b/src/plugins/cppeditor/cpphighlighter.h
@@ -30,8 +30,6 @@
#ifndef CPPHIGHLIGHTER_H
#define CPPHIGHLIGHTER_H
-#include "cppeditorenums.h"
-
#include <texteditor/syntaxhighlighter.h>
#include <QTextCharFormat>
@@ -51,12 +49,6 @@ public:
virtual void highlightBlock(const QString &text);
- // Set formats from a sequence of type QTextCharFormat
- template <class InputIterator>
- void setFormats(InputIterator begin, InputIterator end) {
- qCopy(begin, end, m_formats);
- }
-
private:
void highlightWord(QStringRef word, int position, int length);
void highlightLine(const QString &line, int position, int length,
@@ -66,8 +58,6 @@ private:
int length);
bool isPPKeyword(const QStringRef &text) const;
-
- QTextCharFormat m_formats[NumCppFormats];
};
} // namespace Internal
diff --git a/src/plugins/cppeditor/cppsnippetprovider.cpp b/src/plugins/cppeditor/cppsnippetprovider.cpp
index 6586ae67ae..85cb83ab00 100644
--- a/src/plugins/cppeditor/cppsnippetprovider.cpp
+++ b/src/plugins/cppeditor/cppsnippetprovider.cpp
@@ -36,8 +36,6 @@
#include <cpptools/cppqtstyleindenter.h>
-#include <texteditor/texteditorsettings.h>
-#include <texteditor/fontsettings.h>
#include <texteditor/snippets/snippeteditor.h>
#include <QLatin1String>
@@ -65,12 +63,7 @@ QString CppSnippetProvider::displayName() const
void CppSnippetProvider::decorateEditor(TextEditor::SnippetEditorWidget *editor) const
{
- CppHighlighter *highlighter = new CppHighlighter;
- const TextEditor::FontSettings &fs = TextEditor::TextEditorSettings::instance()->fontSettings();
- const QVector<QTextCharFormat> &formats =
- fs.toTextCharFormats(CPPEditorWidget::highlighterFormatCategories());
- highlighter->setFormats(formats.constBegin(), formats.constEnd());
- editor->setSyntaxHighlighter(highlighter);
+ editor->setSyntaxHighlighter(new CppHighlighter);
editor->setIndenter(new CppTools::CppQtStyleIndenter);
editor->setAutoCompleter(new CppAutoCompleter);
}
diff --git a/src/plugins/cvs/annotationhighlighter.cpp b/src/plugins/cvs/annotationhighlighter.cpp
index 50dc595dc3..d528394a2c 100644
--- a/src/plugins/cvs/annotationhighlighter.cpp
+++ b/src/plugins/cvs/annotationhighlighter.cpp
@@ -33,9 +33,8 @@ using namespace Cvs;
using namespace Cvs::Internal;
CvsAnnotationHighlighter::CvsAnnotationHighlighter(const ChangeNumbers &changeNumbers,
- const QColor &bg,
QTextDocument *document) :
- VcsBase::BaseAnnotationHighlighter(changeNumbers, bg, document),
+ VcsBase::BaseAnnotationHighlighter(changeNumbers, document),
m_blank(QLatin1Char(' '))
{
}
diff --git a/src/plugins/cvs/annotationhighlighter.h b/src/plugins/cvs/annotationhighlighter.h
index 7932da4e98..9ded8cc148 100644
--- a/src/plugins/cvs/annotationhighlighter.h
+++ b/src/plugins/cvs/annotationhighlighter.h
@@ -41,7 +41,7 @@ class CvsAnnotationHighlighter : public VcsBase::BaseAnnotationHighlighter
Q_OBJECT
public:
- explicit CvsAnnotationHighlighter(const ChangeNumbers &changeNumbers, const QColor &bg,
+ explicit CvsAnnotationHighlighter(const ChangeNumbers &changeNumbers,
QTextDocument *document = 0);
private:
diff --git a/src/plugins/cvs/cvseditor.cpp b/src/plugins/cvs/cvseditor.cpp
index f5a3539440..8446b8b63d 100644
--- a/src/plugins/cvs/cvseditor.cpp
+++ b/src/plugins/cvs/cvseditor.cpp
@@ -123,10 +123,9 @@ QString CvsEditor::changeUnderCursor(const QTextCursor &c) const
return QString();
}
-VcsBase::BaseAnnotationHighlighter *CvsEditor::createAnnotationHighlighter(const QSet<QString> &changes,
- const QColor &bg) const
+VcsBase::BaseAnnotationHighlighter *CvsEditor::createAnnotationHighlighter(const QSet<QString> &changes) const
{
- return new CvsAnnotationHighlighter(changes, bg);
+ return new CvsAnnotationHighlighter(changes);
}
QStringList CvsEditor::annotationPreviousVersions(const QString &revision) const
diff --git a/src/plugins/cvs/cvseditor.h b/src/plugins/cvs/cvseditor.h
index 6e6895f651..82621f18f0 100644
--- a/src/plugins/cvs/cvseditor.h
+++ b/src/plugins/cvs/cvseditor.h
@@ -48,7 +48,7 @@ public:
private:
QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const;
- VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
+ VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const;
QStringList annotationPreviousVersions(const QString &revision) const;
mutable QRegExp m_revisionAnnotationPattern;
diff --git a/src/plugins/git/annotationhighlighter.cpp b/src/plugins/git/annotationhighlighter.cpp
index 9b19420eb4..4e91ca0882 100644
--- a/src/plugins/git/annotationhighlighter.cpp
+++ b/src/plugins/git/annotationhighlighter.cpp
@@ -35,9 +35,8 @@ namespace Git {
namespace Internal {
GitAnnotationHighlighter::GitAnnotationHighlighter(const ChangeNumbers &changeNumbers,
- const QColor &bg,
QTextDocument *document) :
- VcsBase::BaseAnnotationHighlighter(changeNumbers, bg, document),
+ VcsBase::BaseAnnotationHighlighter(changeNumbers, document),
m_blank(QLatin1Char(' '))
{
}
diff --git a/src/plugins/git/annotationhighlighter.h b/src/plugins/git/annotationhighlighter.h
index 6c2539b6fb..73f5985126 100644
--- a/src/plugins/git/annotationhighlighter.h
+++ b/src/plugins/git/annotationhighlighter.h
@@ -40,7 +40,7 @@ class GitAnnotationHighlighter : public VcsBase::BaseAnnotationHighlighter
{
Q_OBJECT
public:
- explicit GitAnnotationHighlighter(const ChangeNumbers &changeNumbers, const QColor &bg,
+ explicit GitAnnotationHighlighter(const ChangeNumbers &changeNumbers,
QTextDocument *document = 0);
private:
diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp
index cdc4746055..2baf17ddef 100644
--- a/src/plugins/git/giteditor.cpp
+++ b/src/plugins/git/giteditor.cpp
@@ -107,10 +107,9 @@ QString GitEditor::changeUnderCursor(const QTextCursor &c) const
return QString();
}
-VcsBase::BaseAnnotationHighlighter *GitEditor::createAnnotationHighlighter(const QSet<QString> &changes,
- const QColor &bg) const
+VcsBase::BaseAnnotationHighlighter *GitEditor::createAnnotationHighlighter(const QSet<QString> &changes) const
{
- return new GitAnnotationHighlighter(changes, bg);
+ return new GitAnnotationHighlighter(changes);
}
/* Remove the date specification from annotation, which is tabular:
diff --git a/src/plugins/git/giteditor.h b/src/plugins/git/giteditor.h
index 47f79e07e8..648a2fa4ec 100644
--- a/src/plugins/git/giteditor.h
+++ b/src/plugins/git/giteditor.h
@@ -63,7 +63,7 @@ private:
bool open(QString *errorString, const QString &fileName, const QString &realFileName);
QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const;
- VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
+ VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const;
QString decorateVersion(const QString &revision) const;
QStringList annotationPreviousVersions(const QString &revision) const;
bool isValidRevision(const QString &revision) const;
diff --git a/src/plugins/git/githighlighters.cpp b/src/plugins/git/githighlighters.cpp
index 2f00c9f2db..835b0f556d 100644
--- a/src/plugins/git/githighlighters.cpp
+++ b/src/plugins/git/githighlighters.cpp
@@ -27,9 +27,7 @@
**
****************************************************************************/
-#include <texteditor/fontsettings.h>
#include <texteditor/texteditorconstants.h>
-#include <texteditor/texteditorsettings.h>
#include <utils/qtcassert.h>
@@ -40,13 +38,6 @@ namespace Internal {
static const char CHANGE_PATTERN[] = "\\b[a-f0-9]{7,40}\\b";
-// Retrieve the comment char format from the text editor.
-static QTextCharFormat commentFormat()
-{
- const TextEditor::FontSettings settings = TextEditor::TextEditorSettings::instance()->fontSettings();
- return settings.toTextCharFormat(TextEditor::C_COMMENT);
-}
-
GitSubmitHighlighter::GitSubmitHighlighter(QTextEdit * parent) :
TextEditor::SyntaxHighlighter(parent)
{
@@ -61,7 +52,11 @@ GitSubmitHighlighter::GitSubmitHighlighter(TextEditor::BaseTextDocument *parent)
void GitSubmitHighlighter::initialize()
{
- m_commentFormat = commentFormat();
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty())
+ categories << TextEditor::C_COMMENT;
+
+ setTextFormatCategories(categories);
m_keywordPattern.setPattern(QLatin1String("^[\\w-]+:"));
m_hashChar = QLatin1Char('#');
QTC_CHECK(m_keywordPattern.isValid());
@@ -77,7 +72,7 @@ void GitSubmitHighlighter::highlightBlock(const QString &text)
setCurrentBlockState(state);
return;
} else if (text.startsWith(m_hashChar)) {
- setFormat(0, text.size(), m_commentFormat);
+ setFormat(0, text.size(), formatForCategory(Format_Comment));
setCurrentBlockState(state);
return;
} else if (state == None) {
@@ -107,11 +102,10 @@ void GitSubmitHighlighter::highlightBlock(const QString &text)
}
GitRebaseHighlighter::RebaseAction::RebaseAction(const QString &regexp,
- const TextEditor::FontSettings &settings,
- TextEditor::TextStyle category)
- : exp(regexp)
+ const Format formatCategory)
+ : exp(regexp),
+ formatCategory(formatCategory)
{
- format = settings.toTextCharFormat(category);
}
GitRebaseHighlighter::GitRebaseHighlighter(TextEditor::BaseTextDocument *parent) :
@@ -119,26 +113,36 @@ GitRebaseHighlighter::GitRebaseHighlighter(TextEditor::BaseTextDocument *parent)
m_hashChar(QLatin1Char('#')),
m_changeNumberPattern(QLatin1String(CHANGE_PATTERN))
{
- const TextEditor::FontSettings settings = TextEditor::TextEditorSettings::instance()->fontSettings();
- m_commentFormat = settings.toTextCharFormat(TextEditor::C_COMMENT);
- m_changeFormat = settings.toTextCharFormat(TextEditor::C_DOXYGEN_COMMENT);
- m_descFormat = settings.toTextCharFormat(TextEditor::C_STRING);
- m_actions << RebaseAction(QLatin1String("^(p|pick)\\b"), settings, TextEditor::C_KEYWORD);
- m_actions << RebaseAction(QLatin1String("^(r|reword)\\b"), settings, TextEditor::C_FIELD);
- m_actions << RebaseAction(QLatin1String("^(e|edit)\\b"), settings, TextEditor::C_TYPE);
- m_actions << RebaseAction(QLatin1String("^(s|squash)\\b"), settings, TextEditor::C_ENUMERATION);
- m_actions << RebaseAction(QLatin1String("^(f|fixup)\\b"), settings, TextEditor::C_NUMBER);
- m_actions << RebaseAction(QLatin1String("^(x|exec)\\b"), settings, TextEditor::C_LABEL);
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty()) {
+ categories << TextEditor::C_COMMENT
+ << TextEditor::C_DOXYGEN_COMMENT
+ << TextEditor::C_STRING
+ << TextEditor::C_KEYWORD
+ << TextEditor::C_FIELD
+ << TextEditor::C_TYPE
+ << TextEditor::C_ENUMERATION
+ << TextEditor::C_NUMBER
+ << TextEditor::C_LABEL;
+ }
+ setTextFormatCategories(categories);
+
+ m_actions << RebaseAction(QLatin1String("^(p|pick)\\b"), Format_Pick);
+ m_actions << RebaseAction(QLatin1String("^(r|reword)\\b"), Format_Reword);
+ m_actions << RebaseAction(QLatin1String("^(e|edit)\\b"), Format_Edit);
+ m_actions << RebaseAction(QLatin1String("^(s|squash)\\b"), Format_Squash);
+ m_actions << RebaseAction(QLatin1String("^(f|fixup)\\b"), Format_Fixup);
+ m_actions << RebaseAction(QLatin1String("^(x|exec)\\b"), Format_Exec);
}
void GitRebaseHighlighter::highlightBlock(const QString &text)
{
if (text.startsWith(m_hashChar)) {
- setFormat(0, text.size(), m_commentFormat);
+ setFormat(0, text.size(), formatForCategory(Format_Comment));
int changeIndex = 0;
while ((changeIndex = m_changeNumberPattern.indexIn(text, changeIndex)) != -1) {
const int changeLen = m_changeNumberPattern.matchedLength();
- setFormat(changeIndex, changeLen, m_changeFormat);
+ setFormat(changeIndex, changeLen, formatForCategory(Format_Change));
changeIndex += changeLen;
}
return;
@@ -147,13 +151,13 @@ void GitRebaseHighlighter::highlightBlock(const QString &text)
foreach (const RebaseAction &action, m_actions) {
if (action.exp.indexIn(text) != -1) {
const int len = action.exp.matchedLength();
- setFormat(0, len, action.format);
+ setFormat(0, len, formatForCategory(action.formatCategory));
const int changeIndex = m_changeNumberPattern.indexIn(text, len);
if (changeIndex != -1) {
const int changeLen = m_changeNumberPattern.matchedLength();
const int descStart = changeIndex + changeLen + 1;
- setFormat(changeIndex, changeLen, m_changeFormat);
- setFormat(descStart, text.size() - descStart, m_descFormat);
+ setFormat(changeIndex, changeLen, formatForCategory(Format_Change));
+ setFormat(descStart, text.size() - descStart, formatForCategory(Format_Description));
}
break;
}
diff --git a/src/plugins/git/githighlighters.h b/src/plugins/git/githighlighters.h
index 3d7f6e0621..888b615c72 100644
--- a/src/plugins/git/githighlighters.h
+++ b/src/plugins/git/githighlighters.h
@@ -31,7 +31,6 @@
#define GITHIGHLIGHTERS_H
#include <texteditor/syntaxhighlighter.h>
-#include <texteditor/texteditorconstants.h>
namespace TextEditor {
class FontSettings;
@@ -40,6 +39,18 @@ class FontSettings;
namespace Git {
namespace Internal {
+enum Format {
+ Format_Comment,
+ Format_Change,
+ Format_Description,
+ Format_Pick,
+ Format_Reword,
+ Format_Edit,
+ Format_Squash,
+ Format_Fixup,
+ Format_Exec
+};
+
// Highlighter for git submit messages. Make the first line bold, indicates
// comments as such (retrieving the format from the text editor) and marks up
// keywords (words in front of a colon as in 'Task: <bla>').
@@ -50,10 +61,10 @@ public:
explicit GitSubmitHighlighter(TextEditor::BaseTextDocument *parent);
void highlightBlock(const QString &text);
- void initialize();
private:
+ void initialize();
+
enum State { None = -1, Header, Other };
- QTextCharFormat m_commentFormat;
QRegExp m_keywordPattern;
QChar m_hashChar;
};
@@ -71,13 +82,9 @@ private:
{
public:
mutable QRegExp exp;
- QTextCharFormat format;
- RebaseAction(const QString &regexp, const TextEditor::FontSettings &settings,
- TextEditor::TextStyle category);
+ Format formatCategory;
+ RebaseAction(const QString &regexp, const Format formatCategory);
};
- QTextCharFormat m_commentFormat;
- QTextCharFormat m_changeFormat;
- QTextCharFormat m_descFormat;
const QChar m_hashChar;
QRegExp m_changeNumberPattern;
QList<RebaseAction> m_actions;
diff --git a/src/plugins/glsleditor/glsleditor.cpp b/src/plugins/glsleditor/glsleditor.cpp
index e744b603de..7e01ccb9f1 100644
--- a/src/plugins/glsleditor/glsleditor.cpp
+++ b/src/plugins/glsleditor/glsleditor.cpp
@@ -51,8 +51,6 @@
#include <coreplugin/mimedatabase.h>
#include <extensionsystem/pluginmanager.h>
#include <texteditor/basetextdocument.h>
-#include <texteditor/fontsettings.h>
-#include <texteditor/tabsettings.h>
#include <texteditor/texteditorconstants.h>
#include <texteditor/texteditorsettings.h>
#include <texteditor/syntaxhighlighter.h>
@@ -64,7 +62,7 @@
#include <QFileInfo>
#include <QSignalMapper>
#include <QTimer>
-#include <QDebug>
+#include <QTextBlock>
#include <QMenu>
#include <QComboBox>
@@ -209,42 +207,6 @@ bool GLSLEditorEditable::open(QString *errorString, const QString &fileName, con
return b;
}
-void GLSLTextEditorWidget::setFontSettings(const TextEditor::FontSettings &fs)
-{
- TextEditor::BaseTextEditorWidget::setFontSettings(fs);
- Highlighter *highlighter = qobject_cast<Highlighter*>(baseTextDocument()->syntaxHighlighter());
- if (!highlighter)
- return;
-
- /*
- NumberFormat,
- StringFormat,
- TypeFormat,
- KeywordFormat,
- LabelFormat,
- CommentFormat,
- VisualWhitespace,
- */
- static QVector<TextEditor::TextStyle> categories;
- if (categories.isEmpty()) {
- categories << TextEditor::C_NUMBER
- << TextEditor::C_STRING
- << TextEditor::C_TYPE
- << TextEditor::C_KEYWORD
- << TextEditor::C_OPERATOR
- << TextEditor::C_PREPROCESSOR
- << TextEditor::C_LABEL
- << TextEditor::C_COMMENT
- << TextEditor::C_DOXYGEN_COMMENT
- << TextEditor::C_DOXYGEN_TAG
- << TextEditor::C_VISUAL_WHITESPACE
- << TextEditor::C_REMOVED_LINE;
- }
-
- highlighter->setFormats(fs.toTextCharFormats(categories));
- highlighter->rehighlight();
-}
-
QString GLSLTextEditorWidget::wordUnderCursor() const
{
QTextCursor tc = textCursor();
diff --git a/src/plugins/glsleditor/glsleditor.h b/src/plugins/glsleditor/glsleditor.h
index dbb8f0279b..dad0ca2b9e 100644
--- a/src/plugins/glsleditor/glsleditor.h
+++ b/src/plugins/glsleditor/glsleditor.h
@@ -109,9 +109,6 @@ public:
TextEditor::IAssistInterface *createAssistInterface(TextEditor::AssistKind assistKind,
TextEditor::AssistReason reason) const;
-public slots:
- virtual void setFontSettings(const TextEditor::FontSettings &);
-
private slots:
void updateDocument();
void updateDocumentNow();
diff --git a/src/plugins/glsleditor/glslhighlighter.cpp b/src/plugins/glsleditor/glslhighlighter.cpp
index abe873b501..709023ea9f 100644
--- a/src/plugins/glsleditor/glslhighlighter.cpp
+++ b/src/plugins/glsleditor/glslhighlighter.cpp
@@ -42,6 +42,22 @@ using namespace TextEditor;
Highlighter::Highlighter(BaseTextDocument *parent)
: TextEditor::SyntaxHighlighter(parent)
{
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty()) {
+ categories << TextEditor::C_NUMBER
+ << TextEditor::C_STRING
+ << TextEditor::C_TYPE
+ << TextEditor::C_KEYWORD
+ << TextEditor::C_OPERATOR
+ << TextEditor::C_PREPROCESSOR
+ << TextEditor::C_LABEL
+ << TextEditor::C_COMMENT
+ << TextEditor::C_DOXYGEN_COMMENT
+ << TextEditor::C_DOXYGEN_TAG
+ << TextEditor::C_VISUAL_WHITESPACE
+ << TextEditor::C_REMOVED_LINE;
+ }
+ setTextFormatCategories(categories);
}
Highlighter::~Highlighter()
@@ -49,11 +65,6 @@ Highlighter::~Highlighter()
}
-void Highlighter::setFormats(const QVector<QTextCharFormat> &formats)
-{
- qCopy(formats.begin(), formats.end(), m_formats);
-}
-
void Highlighter::highlightBlock(const QString &text)
{
const int previousState = previousBlockState();
@@ -96,7 +107,7 @@ void Highlighter::highlightBlock(const QString &text)
setCurrentBlockState(previousState);
BaseTextDocumentLayout::clearParentheses(currentBlock());
if (text.length()) // the empty line can still contain whitespace
- setFormat(0, text.length(), m_formats[GLSLVisualWhitespace]);
+ setFormat(0, text.length(), formatForCategory(GLSLVisualWhitespace));
BaseTextDocumentLayout::setFoldingIndent(currentBlock(), foldingIndent);
return;
}
@@ -120,7 +131,7 @@ void Highlighter::highlightBlock(const QString &text)
if (previousTokenEnd != tk.begin()) {
setFormat(previousTokenEnd, tk.begin() - previousTokenEnd,
- m_formats[GLSLVisualWhitespace]);
+ formatForCategory(GLSLVisualWhitespace));
}
if (tk.is(GLSL::Parser::T_LEFT_PAREN) || tk.is(GLSL::Parser::T_LEFT_BRACE) || tk.is(GLSL::Parser::T_LEFT_BRACKET)) {
@@ -157,17 +168,17 @@ void Highlighter::highlightBlock(const QString &text)
highlightAsPreprocessor = false;
if (false /* && i == 0 && tk.is(GLSL::Parser::T_POUND)*/) {
- highlightLine(text, tk.begin(), tk.length, m_formats[GLSLPreprocessorFormat]);
+ highlightLine(text, tk.begin(), tk.length, formatForCategory(GLSLPreprocessorFormat));
highlightAsPreprocessor = true;
} else if (highlightCurrentWordAsPreprocessor && isPPKeyword(text.midRef(tk.begin(), tk.length))) {
- setFormat(tk.begin(), tk.length, m_formats[GLSLPreprocessorFormat]);
+ setFormat(tk.begin(), tk.length, formatForCategory(GLSLPreprocessorFormat));
} else if (tk.is(GLSL::Parser::T_NUMBER)) {
- setFormat(tk.begin(), tk.length, m_formats[GLSLNumberFormat]);
+ setFormat(tk.begin(), tk.length, formatForCategory(GLSLNumberFormat));
} else if (tk.is(GLSL::Parser::T_COMMENT)) {
- highlightLine(text, tk.begin(), tk.length, m_formats[GLSLCommentFormat]);
+ highlightLine(text, tk.begin(), tk.length, formatForCategory(GLSLCommentFormat));
// we need to insert a close comment parenthesis, if
// - the line starts in a C Comment (initalState != 0)
@@ -190,9 +201,9 @@ void Highlighter::highlightBlock(const QString &text)
} else if (tk.is(GLSL::Parser::T_IDENTIFIER)) {
int kind = lex.findKeyword(data.constData() + tk.position, tk.length);
if (kind == GLSL::Parser::T_RESERVED)
- setFormat(tk.position, tk.length, m_formats[GLSLReservedKeyword]);
+ setFormat(tk.position, tk.length, formatForCategory(GLSLReservedKeyword));
else if (kind != GLSL::Parser::T_IDENTIFIER)
- setFormat(tk.position, tk.length, m_formats[GLSLKeywordFormat]);
+ setFormat(tk.position, tk.length, formatForCategory(GLSLKeywordFormat));
}
}
@@ -245,7 +256,7 @@ void Highlighter::highlightBlock(const QString &text)
void Highlighter::highlightLine(const QString &text, int position, int length,
const QTextCharFormat &format)
{
- const QTextCharFormat visualSpaceFormat = m_formats[GLSLVisualWhitespace];
+ const QTextCharFormat visualSpaceFormat = formatForCategory(GLSLVisualWhitespace);
const int end = position + length;
int index = position;
@@ -363,15 +374,15 @@ void Highlighter::highlightBlock(const QString &text)
const GLSL::Token &tk = tokens.at(i);
if (tk.is(GLSL::Parser::T_NUMBER)) {
- setFormat(tk.position, tk.length, m_formats[GLSLNumberFormat]);
+ setFormat(tk.position, tk.length, formatForCategory(GLSLNumberFormat);
} else if (tk.is(GLSL::Parser::T_COMMENT)) {
- setFormat(tk.position, tk.length, Qt::darkGreen); // ### FIXME: m_formats[GLSLCommentFormat]);
+ setFormat(tk.position, tk.length, Qt::darkGreen); // ### FIXME: formatForCategory(GLSLCommentFormat);
} else if (tk.is(GLSL::Parser::T_IDENTIFIER)) {
int kind = lex.findKeyword(data.constData() + tk.position, tk.length);
if (kind == GLSL::Parser::T_RESERVED)
- setFormat(tk.position, tk.length, m_formats[GLSLReservedKeyword]);
+ setFormat(tk.position, tk.length, formatForCategory(GLSLReservedKeyword);
else if (kind != GLSL::Parser::T_IDENTIFIER)
- setFormat(tk.position, tk.length, m_formats[GLSLKeywordFormat]);
+ setFormat(tk.position, tk.length, formatForCategory(GLSLKeywordFormat);
} else if (tk.is(GLSL::Parser::T_LEFT_PAREN) || tk.is(GLSL::Parser::T_LEFT_BRACE) || tk.is(GLSL::Parser::T_LEFT_BRACKET)) {
const QChar c = text.at(tk.begin());
parentheses.append(Parenthesis(Parenthesis::Opened, c, tk.begin()));
diff --git a/src/plugins/glsleditor/glslhighlighter.h b/src/plugins/glsleditor/glslhighlighter.h
index 9038f636b3..fdc40f97ff 100644
--- a/src/plugins/glsleditor/glslhighlighter.h
+++ b/src/plugins/glsleditor/glslhighlighter.h
@@ -60,15 +60,10 @@ public:
explicit Highlighter(TextEditor::BaseTextDocument *parent);
virtual ~Highlighter();
- void setFormats(const QVector<QTextCharFormat> &formats);
-
protected:
void highlightBlock(const QString &text);
void highlightLine(const QString &text, int position, int length, const QTextCharFormat &format);
bool isPPKeyword(const QStringRef &text) const;
-
-private:
- QTextCharFormat m_formats[NumGLSLFormats];
};
} // namespace Internal
diff --git a/src/plugins/mercurial/annotationhighlighter.cpp b/src/plugins/mercurial/annotationhighlighter.cpp
index 22656bed55..6a0a0be01e 100644
--- a/src/plugins/mercurial/annotationhighlighter.cpp
+++ b/src/plugins/mercurial/annotationhighlighter.cpp
@@ -34,9 +34,8 @@ using namespace Mercurial::Internal;
using namespace Mercurial;
MercurialAnnotationHighlighter::MercurialAnnotationHighlighter(const ChangeNumbers &changeNumbers,
- const QColor &bg,
QTextDocument *document)
- : VcsBase::BaseAnnotationHighlighter(changeNumbers, bg, document),
+ : VcsBase::BaseAnnotationHighlighter(changeNumbers, document),
changeset(QLatin1String(Constants::CHANGESETID12))
{
}
diff --git a/src/plugins/mercurial/annotationhighlighter.h b/src/plugins/mercurial/annotationhighlighter.h
index 310596554d..931a745c6e 100644
--- a/src/plugins/mercurial/annotationhighlighter.h
+++ b/src/plugins/mercurial/annotationhighlighter.h
@@ -39,7 +39,7 @@ namespace Internal {
class MercurialAnnotationHighlighter : public VcsBase::BaseAnnotationHighlighter
{
public:
- explicit MercurialAnnotationHighlighter(const ChangeNumbers &changeNumbers, const QColor &bg,
+ explicit MercurialAnnotationHighlighter(const ChangeNumbers &changeNumbers,
QTextDocument *document = 0);
private:
diff --git a/src/plugins/mercurial/mercurialeditor.cpp b/src/plugins/mercurial/mercurialeditor.cpp
index 79bbcded45..ca6a62b9fb 100644
--- a/src/plugins/mercurial/mercurialeditor.cpp
+++ b/src/plugins/mercurial/mercurialeditor.cpp
@@ -89,10 +89,9 @@ QString MercurialEditor::changeUnderCursor(const QTextCursor &cursorIn) const
return QString();
}
-VcsBase::BaseAnnotationHighlighter *MercurialEditor::createAnnotationHighlighter(const QSet<QString> &changes,
- const QColor &bg) const
+VcsBase::BaseAnnotationHighlighter *MercurialEditor::createAnnotationHighlighter(const QSet<QString> &changes) const
{
- return new MercurialAnnotationHighlighter(changes, bg);
+ return new MercurialAnnotationHighlighter(changes);
}
QString MercurialEditor::decorateVersion(const QString &revision) const
diff --git a/src/plugins/mercurial/mercurialeditor.h b/src/plugins/mercurial/mercurialeditor.h
index a2ca6dce8b..ddbefdcce8 100644
--- a/src/plugins/mercurial/mercurialeditor.h
+++ b/src/plugins/mercurial/mercurialeditor.h
@@ -46,7 +46,7 @@ public:
private:
QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &cursor) const;
- VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
+ VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const;
QString decorateVersion(const QString &revision) const;
QStringList annotationPreviousVersions(const QString &revision) const;
diff --git a/src/plugins/perforce/annotationhighlighter.cpp b/src/plugins/perforce/annotationhighlighter.cpp
index d3d8760958..93ee74918c 100644
--- a/src/plugins/perforce/annotationhighlighter.cpp
+++ b/src/plugins/perforce/annotationhighlighter.cpp
@@ -33,9 +33,8 @@ namespace Perforce {
namespace Internal {
PerforceAnnotationHighlighter::PerforceAnnotationHighlighter(const ChangeNumbers &changeNumbers,
- const QColor &bg,
QTextDocument *document) :
- VcsBase::BaseAnnotationHighlighter(changeNumbers, bg, document),
+ VcsBase::BaseAnnotationHighlighter(changeNumbers, document),
m_colon(QLatin1Char(':'))
{
}
diff --git a/src/plugins/perforce/annotationhighlighter.h b/src/plugins/perforce/annotationhighlighter.h
index 4c47fd48b3..2d35c04c6e 100644
--- a/src/plugins/perforce/annotationhighlighter.h
+++ b/src/plugins/perforce/annotationhighlighter.h
@@ -41,7 +41,6 @@ class PerforceAnnotationHighlighter : public VcsBase::BaseAnnotationHighlighter
Q_OBJECT
public:
explicit PerforceAnnotationHighlighter(const ChangeNumbers &changeNumbers,
- const QColor &bg,
QTextDocument *document = 0);
private:
diff --git a/src/plugins/perforce/perforceeditor.cpp b/src/plugins/perforce/perforceeditor.cpp
index 0c3a66d6da..a859a77fe6 100644
--- a/src/plugins/perforce/perforceeditor.cpp
+++ b/src/plugins/perforce/perforceeditor.cpp
@@ -109,10 +109,9 @@ QString PerforceEditor::changeUnderCursor(const QTextCursor &c) const
return m_changeNumberPattern.exactMatch(change) ? change : QString();
}
-VcsBase::BaseAnnotationHighlighter *PerforceEditor::createAnnotationHighlighter(const QSet<QString> &changes,
- const QColor &bg) const
+VcsBase::BaseAnnotationHighlighter *PerforceEditor::createAnnotationHighlighter(const QSet<QString> &changes) const
{
- return new PerforceAnnotationHighlighter(changes, bg);
+ return new PerforceAnnotationHighlighter(changes);
}
QString PerforceEditor::findDiffFile(const QString &f) const
diff --git a/src/plugins/perforce/perforceeditor.h b/src/plugins/perforce/perforceeditor.h
index 09c1ef2b1b..6f8163d23c 100644
--- a/src/plugins/perforce/perforceeditor.h
+++ b/src/plugins/perforce/perforceeditor.h
@@ -50,7 +50,7 @@ public:
private:
QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const;
- VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
+ VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const;
QString findDiffFile(const QString &f) const;
QStringList annotationPreviousVersions(const QString &v) const;
diff --git a/src/plugins/pythoneditor/tools/pythonhighlighter.cpp b/src/plugins/pythoneditor/tools/pythonhighlighter.cpp
index 6e59d4a013..ea809c4e6f 100644
--- a/src/plugins/pythoneditor/tools/pythonhighlighter.cpp
+++ b/src/plugins/pythoneditor/tools/pythonhighlighter.cpp
@@ -40,9 +40,7 @@
#include "pythonhighlighter.h"
#include "lexical/pythonscanner.h"
-#include <texteditor/basetextdocumentlayout.h>
#include <texteditor/basetextdocument.h>
-#include <texteditor/fontsettings.h>
#include <texteditor/texteditorconstants.h>
namespace PythonEditor {
@@ -67,30 +65,26 @@ using namespace PythonEditor::Internal;
* @endcode
*/
-/// @return List that maps enum Format values to TextEditor plugin formats
-QVector<TextEditor::TextStyle> initFormatCategories()
-{
- QVector<TextEditor::TextStyle> categories(Format_FormatsAmount);
- categories[Format_Number] = TextEditor::C_NUMBER;
- categories[Format_String] = TextEditor::C_STRING;
- categories[Format_Keyword] = TextEditor::C_KEYWORD;
- categories[Format_Type] = TextEditor::C_TYPE;
- categories[Format_ClassField] = TextEditor::C_FIELD;
- categories[Format_MagicAttr] = TextEditor::C_JS_SCOPE_VAR;
- categories[Format_Operator] = TextEditor::C_OPERATOR;
- categories[Format_Comment] = TextEditor::C_COMMENT;
- categories[Format_Doxygen] = TextEditor::C_DOXYGEN_COMMENT;
- categories[Format_Whitespace] = TextEditor::C_VISUAL_WHITESPACE;
- categories[Format_Identifier] = TextEditor::C_TEXT;
- categories[Format_ImportedModule] = TextEditor::C_STRING;
-
- return categories;
-}
-
/// New instance created when opening any document in editor
PythonHighlighter::PythonHighlighter(TextEditor::BaseTextDocument *parent) :
TextEditor::SyntaxHighlighter(parent)
{
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty()) {
+ categories << TextEditor::C_NUMBER
+ << TextEditor::C_STRING
+ << TextEditor::C_KEYWORD
+ << TextEditor::C_TYPE
+ << TextEditor::C_FIELD
+ << TextEditor::C_JS_SCOPE_VAR
+ << TextEditor::C_OPERATOR
+ << TextEditor::C_COMMENT
+ << TextEditor::C_DOXYGEN_COMMENT
+ << TextEditor::C_TEXT
+ << TextEditor::C_VISUAL_WHITESPACE
+ << TextEditor::C_STRING;
+ }
+ setTextFormatCategories(categories);
}
/// Instance destroyed when one of documents closed from editor
@@ -99,18 +93,6 @@ PythonHighlighter::~PythonHighlighter()
}
/**
- QtCreator has own fonts&color settings. Highlighter wants get access to
- this settings before highlightBlock() called first time.
- Settings provided by PyEditor::EditorWidget class.
- */
-void PythonHighlighter::setFontSettings(const TextEditor::FontSettings &fs)
-{
- QVector<TextEditor::TextStyle> categories = initFormatCategories();
- m_formats = fs.toTextCharFormats(categories);
- rehighlight();
-}
-
-/**
* @brief Highlighter::highlightBlock highlights single line of Python code
* @param text is single line without EOLN symbol. Access to all block data
* can be obtained through inherited currentBlock() method.
@@ -155,13 +137,13 @@ int PythonHighlighter::highlightLine(const QString &text, int initialState)
if (format == Format_Keyword) {
QString value = scanner.value(tk);
if (isImportKeyword(value) && hasOnlyWhitespace) {
- setFormat(tk.begin(), tk.length(), m_formats[format]);
+ setFormat(tk.begin(), tk.length(), formatForCategory(format));
highlightImport(scanner);
break;
}
}
- setFormat(tk.begin(), tk.length(), m_formats[format]);
+ setFormat(tk.begin(), tk.length(), formatForCategory(format));
if (format != Format_Whitespace)
hasOnlyWhitespace = false;
}
@@ -178,7 +160,7 @@ void PythonHighlighter::highlightImport(Scanner &scanner)
Format format = tk.format();
if (tk.format() == Format_Identifier)
format = Format_ImportedModule;
- setFormat(tk.begin(), tk.length(), m_formats[format]);
+ setFormat(tk.begin(), tk.length(), formatForCategory(format));
}
}
diff --git a/src/plugins/pythoneditor/tools/pythonhighlighter.h b/src/plugins/pythoneditor/tools/pythonhighlighter.h
index cb2a72e243..801f55e066 100644
--- a/src/plugins/pythoneditor/tools/pythonhighlighter.h
+++ b/src/plugins/pythoneditor/tools/pythonhighlighter.h
@@ -32,8 +32,6 @@
#include "../pythoneditor_global.h"
#include <texteditor/syntaxhighlighter.h>
-#include <texteditor/fontsettings.h>
-#include <QMap>
namespace PythonEditor {
@@ -46,15 +44,12 @@ public:
explicit PythonHighlighter(TextEditor::BaseTextDocument *parent);
virtual ~PythonHighlighter();
- void setFontSettings(const TextEditor::FontSettings &fs);
-
protected:
virtual void highlightBlock(const QString &text);
private:
int highlightLine(const QString &text, int initialState);
void highlightImport(Internal::Scanner &scanner);
- QVector<QTextCharFormat> m_formats;
};
} // namespace PythonEditor
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 4292812c07..c6e3b27630 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -980,12 +980,6 @@ void QmlJSTextEditorWidget::updateFileName()
void QmlJSTextEditorWidget::setFontSettings(const TextEditor::FontSettings &fs)
{
TextEditor::BaseTextEditorWidget::setFontSettings(fs);
- Highlighter *highlighter = qobject_cast<Highlighter*>(baseTextDocument()->syntaxHighlighter());
- if (!highlighter)
- return;
-
- highlighter->setFormats(fs.toTextCharFormats(highlighterFormatCategories()));
- highlighter->rehighlight();
m_occurrencesFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES);
m_occurrencesUnusedFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES_UNUSED);
diff --git a/src/plugins/qmljseditor/qmljshighlighter.cpp b/src/plugins/qmljseditor/qmljshighlighter.cpp
index 840f5839ae..2628077ce4 100644
--- a/src/plugins/qmljseditor/qmljshighlighter.cpp
+++ b/src/plugins/qmljseditor/qmljshighlighter.cpp
@@ -41,11 +41,22 @@ using namespace QmlJS;
Highlighter::Highlighter(QTextDocument *parent)
: TextEditor::SyntaxHighlighter(parent),
m_qmlEnabled(true),
+ m_braceDepth(0),
+ m_foldingIndent(0),
m_inMultilineComment(false)
{
m_currentBlockParentheses.reserve(20);
- m_braceDepth = 0;
- m_foldingIndent = 0;
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty()) {
+ categories << TextEditor::C_NUMBER
+ << TextEditor::C_STRING
+ << TextEditor::C_TYPE
+ << TextEditor::C_KEYWORD
+ << TextEditor::C_FIELD
+ << TextEditor::C_COMMENT
+ << TextEditor::C_VISUAL_WHITESPACE;
+ }
+ setTextFormatCategories(categories);
}
Highlighter::~Highlighter()
@@ -62,12 +73,6 @@ void Highlighter::setQmlEnabled(bool qmlEnabled)
m_qmlEnabled = qmlEnabled;
}
-void Highlighter::setFormats(const QVector<QTextCharFormat> &formats)
-{
- QTC_ASSERT(formats.size() == NumFormats, return);
- qCopy(formats.begin(), formats.end(), m_formats);
-}
-
void Highlighter::highlightBlock(const QString &text)
{
const QList<Token> tokens = m_scanner(text, onBlockStart());
@@ -78,11 +83,11 @@ void Highlighter::highlightBlock(const QString &text)
switch (token.kind) {
case Token::Keyword:
- setFormat(token.offset, token.length, m_formats[KeywordFormat]);
+ setFormat(token.offset, token.length, formatForCategory(KeywordFormat));
break;
case Token::String:
- setFormat(token.offset, token.length, m_formats[StringFormat]);
+ setFormat(token.offset, token.length, formatForCategory(StringFormat));
break;
case Token::Comment:
@@ -95,11 +100,11 @@ void Highlighter::highlightBlock(const QString &text)
onOpeningParenthesis(QLatin1Char('+'), token.offset, index == 0);
m_inMultilineComment = true;
}
- setFormat(token.offset, token.length, m_formats[CommentFormat]);
+ setFormat(token.offset, token.length, formatForCategory(CommentFormat));
break;
case Token::RegExp:
- setFormat(token.offset, token.length, m_formats[StringFormat]);
+ setFormat(token.offset, token.length, formatForCategory(StringFormat));
break;
case Token::LeftParenthesis:
@@ -136,7 +141,7 @@ void Highlighter::highlightBlock(const QString &text)
// 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)) {
- setFormat(token.offset, token.length, m_formats[KeywordFormat]);
+ setFormat(token.offset, token.length, formatForCategory(KeywordFormat));
break;
}
}
@@ -144,7 +149,7 @@ void Highlighter::highlightBlock(const QString &text)
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")) {
- setFormat(token.offset, token.length, m_formats[KeywordFormat]);
+ setFormat(token.offset, token.length, formatForCategory(KeywordFormat));
break;
}
}
@@ -163,7 +168,7 @@ void Highlighter::highlightBlock(const QString &text)
int previousTokenEnd = 0;
for (int index = 0; index < tokens.size(); ++index) {
const Token &token = tokens.at(index);
- setFormat(previousTokenEnd, token.begin() - previousTokenEnd, m_formats[VisualWhitespace]);
+ setFormat(previousTokenEnd, token.begin() - previousTokenEnd, formatForCategory(VisualWhitespace));
switch (token.kind) {
case Token::Comment:
@@ -177,7 +182,7 @@ void Highlighter::highlightBlock(const QString &text)
do {
++i;
} while (i < e && text.at(i).isSpace());
- setFormat(start, i - start, m_formats[VisualWhitespace]);
+ setFormat(start, i - start, formatForCategory(VisualWhitespace));
} else {
++i;
}
@@ -191,7 +196,7 @@ void Highlighter::highlightBlock(const QString &text)
previousTokenEnd = token.end();
}
- setFormat(previousTokenEnd, text.length() - previousTokenEnd, m_formats[VisualWhitespace]);
+ setFormat(previousTokenEnd, text.length() - previousTokenEnd, formatForCategory(VisualWhitespace));
setCurrentBlockState(m_scanner.state());
onBlockEnd(m_scanner.state());
diff --git a/src/plugins/qmljseditor/qmljshighlighter.h b/src/plugins/qmljseditor/qmljshighlighter.h
index badcfc05f4..b81f168721 100644
--- a/src/plugins/qmljseditor/qmljshighlighter.h
+++ b/src/plugins/qmljseditor/qmljshighlighter.h
@@ -34,13 +34,8 @@
#include <qmljs/qmljsscanner.h>
-#include <QVector>
-#include <QSet>
-#include <QSyntaxHighlighter>
-
#include <texteditor/basetextdocumentlayout.h>
#include <texteditor/syntaxhighlighter.h>
-#include <texteditor/texteditorconstants.h>
namespace QmlJSEditor {
@@ -65,7 +60,6 @@ public:
bool isQmlEnabled() const;
void setQmlEnabled(bool duiEnabled);
- void setFormats(const QVector<QTextCharFormat> &formats);
protected:
virtual void highlightBlock(const QString &text);
@@ -92,8 +86,6 @@ private:
QmlJS::Scanner m_scanner;
Parentheses m_currentBlockParentheses;
-
- QTextCharFormat m_formats[NumFormats];
};
} // namespace QmlJSEditor
diff --git a/src/plugins/qmljseditor/qmljssnippetprovider.cpp b/src/plugins/qmljseditor/qmljssnippetprovider.cpp
index 5253a12be5..026fef6199 100644
--- a/src/plugins/qmljseditor/qmljssnippetprovider.cpp
+++ b/src/plugins/qmljseditor/qmljssnippetprovider.cpp
@@ -34,7 +34,6 @@
#include "qmljseditorconstants.h"
#include <texteditor/texteditorsettings.h>
-#include <texteditor/fontsettings.h>
#include <texteditor/texteditorconstants.h>
#include <texteditor/snippets/snippeteditor.h>
@@ -65,10 +64,7 @@ QString QmlJSSnippetProvider::displayName() const
void QmlJSSnippetProvider::decorateEditor(TextEditor::SnippetEditorWidget *editor) const
{
- Highlighter *highlighter = new Highlighter;
- const TextEditor::FontSettings &fs = TextEditor::TextEditorSettings::instance()->fontSettings();
- highlighter->setFormats(fs.toTextCharFormats(QmlJSTextEditorWidget::highlighterFormatCategories()));
- editor->setSyntaxHighlighter(highlighter);
+ editor->setSyntaxHighlighter(new Highlighter);
editor->setIndenter(new Indenter);
editor->setAutoCompleter(new AutoCompleter);
}
diff --git a/src/plugins/qt4projectmanager/profileeditor.cpp b/src/plugins/qt4projectmanager/profileeditor.cpp
index e60d48c60e..3ce4692ca2 100644
--- a/src/plugins/qt4projectmanager/profileeditor.cpp
+++ b/src/plugins/qt4projectmanager/profileeditor.cpp
@@ -190,25 +190,6 @@ void ProFileEditorWidget::contextMenuEvent(QContextMenuEvent *e)
showDefaultContextMenu(e, Constants::M_CONTEXT);
}
-void ProFileEditorWidget::setFontSettings(const TextEditor::FontSettings &fs)
-{
- TextEditor::BaseTextEditorWidget::setFontSettings(fs);
- ProFileHighlighter *highlighter = qobject_cast<ProFileHighlighter*>(baseTextDocument()->syntaxHighlighter());
- if (!highlighter)
- return;
-
- static QVector<TextEditor::TextStyle> categories;
- if (categories.isEmpty()) {
- categories << TextEditor::C_TYPE
- << TextEditor::C_KEYWORD
- << TextEditor::C_COMMENT
- << TextEditor::C_VISUAL_WHITESPACE;
- }
-
- highlighter->setFormats(fs.toTextCharFormats(categories));
- highlighter->rehighlight();
-}
-
//
// ProFileDocument
//
diff --git a/src/plugins/qt4projectmanager/profileeditor.h b/src/plugins/qt4projectmanager/profileeditor.h
index fc0a15f564..4c86dfbf3b 100644
--- a/src/plugins/qt4projectmanager/profileeditor.h
+++ b/src/plugins/qt4projectmanager/profileeditor.h
@@ -75,9 +75,6 @@ protected:
TextEditor::BaseTextEditor *createEditor();
void contextMenuEvent(QContextMenuEvent *);
-public slots:
- virtual void setFontSettings(const TextEditor::FontSettings &);
-
private:
ProFileEditorFactory *m_factory;
TextEditor::TextEditorActionHandler *m_ah;
diff --git a/src/plugins/qt4projectmanager/profilehighlighter.cpp b/src/plugins/qt4projectmanager/profilehighlighter.cpp
index 7d346c070a..11e5b1424c 100644
--- a/src/plugins/qt4projectmanager/profilehighlighter.cpp
+++ b/src/plugins/qt4projectmanager/profilehighlighter.cpp
@@ -43,6 +43,15 @@ ProFileHighlighter::ProFileHighlighter(QTextDocument *document) :
ProFileCompletionAssistProvider *pcap
= ExtensionSystem::PluginManager::getObject<ProFileCompletionAssistProvider>();
m_keywords = TextEditor::Keywords(pcap->variables(), pcap->functions(), QMap<QString, QStringList>());
+
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty()) {
+ categories << TextEditor::C_TYPE
+ << TextEditor::C_KEYWORD
+ << TextEditor::C_COMMENT
+ << TextEditor::C_VISUAL_WHITESPACE;
+ }
+ setTextFormatCategories(categories);
}
void ProFileHighlighter::highlightBlock(const QString &text)
@@ -58,26 +67,26 @@ void ProFileHighlighter::highlightBlock(const QString &text)
for (;;) {
const QChar c = text.at(i);
if (inCommentMode) {
- setFormat(i, 1, m_formats[ProfileCommentFormat]);
+ setFormat(i, 1, formatForCategory(ProfileCommentFormat));
} else {
if (c.isLetter() || c == QLatin1Char('_') || c == QLatin1Char('.') || c.isDigit()) {
buf += c;
setFormat(i - buf.length()+1, buf.length(), emptyFormat);
if (!buf.isEmpty() && m_keywords.isFunction(buf))
- setFormat(i - buf.length()+1, buf.length(), m_formats[ProfileFunctionFormat]);
+ setFormat(i - buf.length()+1, buf.length(), formatForCategory(ProfileFunctionFormat));
else if (!buf.isEmpty() && m_keywords.isVariable(buf))
- setFormat(i - buf.length()+1, buf.length(), m_formats[ProfileVariableFormat]);
+ setFormat(i - buf.length()+1, buf.length(), formatForCategory(ProfileVariableFormat));
} else if (c == QLatin1Char('(')) {
if (!buf.isEmpty() && m_keywords.isFunction(buf))
- setFormat(i - buf.length(), buf.length(), m_formats[ProfileFunctionFormat]);
+ setFormat(i - buf.length(), buf.length(), formatForCategory(ProfileFunctionFormat));
buf.clear();
} else if (c == QLatin1Char('#')) {
inCommentMode = true;
- setFormat(i, 1, m_formats[ProfileCommentFormat]);
+ setFormat(i, 1, formatForCategory(ProfileCommentFormat));
buf.clear();
} else {
if (!buf.isEmpty() && m_keywords.isVariable(buf))
- setFormat(i - buf.length(), buf.length(), m_formats[ProfileVariableFormat]);
+ setFormat(i - buf.length(), buf.length(), formatForCategory(ProfileVariableFormat));
buf.clear();
}
}
@@ -86,5 +95,5 @@ void ProFileHighlighter::highlightBlock(const QString &text)
break;
}
- applyFormatToSpaces(text, m_formats[ProfileVisualWhitespaceFormat]);
+ applyFormatToSpaces(text, formatForCategory(ProfileVisualWhitespaceFormat));
}
diff --git a/src/plugins/qt4projectmanager/profilehighlighter.h b/src/plugins/qt4projectmanager/profilehighlighter.h
index 9ae775785f..a7317962fd 100644
--- a/src/plugins/qt4projectmanager/profilehighlighter.h
+++ b/src/plugins/qt4projectmanager/profilehighlighter.h
@@ -51,14 +51,7 @@ public:
ProFileHighlighter(QTextDocument *document = 0);
void highlightBlock(const QString &text);
- // Set formats from a sequence of type QTextCharFormat
- void setFormats(const QVector<QTextCharFormat> &formats)
- {
- qCopy(formats.begin(), formats.end(), m_formats);
- }
-
private:
- QTextCharFormat m_formats[NumProfileFormats];
TextEditor::Keywords m_keywords;
};
diff --git a/src/plugins/subversion/annotationhighlighter.cpp b/src/plugins/subversion/annotationhighlighter.cpp
index 8671bdb7a2..f80b9f66ac 100644
--- a/src/plugins/subversion/annotationhighlighter.cpp
+++ b/src/plugins/subversion/annotationhighlighter.cpp
@@ -33,9 +33,8 @@ using namespace Subversion;
using namespace Subversion::Internal;
SubversionAnnotationHighlighter::SubversionAnnotationHighlighter(const ChangeNumbers &changeNumbers,
- const QColor &bg,
QTextDocument *document) :
- VcsBase::BaseAnnotationHighlighter(changeNumbers, bg, document),
+ VcsBase::BaseAnnotationHighlighter(changeNumbers, document),
m_blank(QLatin1Char(' '))
{
}
diff --git a/src/plugins/subversion/annotationhighlighter.h b/src/plugins/subversion/annotationhighlighter.h
index 683e820215..8d1e785dca 100644
--- a/src/plugins/subversion/annotationhighlighter.h
+++ b/src/plugins/subversion/annotationhighlighter.h
@@ -40,7 +40,7 @@ class SubversionAnnotationHighlighter : public VcsBase::BaseAnnotationHighlighte
{
Q_OBJECT
public:
- explicit SubversionAnnotationHighlighter(const ChangeNumbers &changeNumbers, const QColor &bg,
+ explicit SubversionAnnotationHighlighter(const ChangeNumbers &changeNumbers,
QTextDocument *document = 0);
private:
diff --git a/src/plugins/subversion/subversioneditor.cpp b/src/plugins/subversion/subversioneditor.cpp
index 569268686e..a64b401486 100644
--- a/src/plugins/subversion/subversioneditor.cpp
+++ b/src/plugins/subversion/subversioneditor.cpp
@@ -109,10 +109,9 @@ QString SubversionEditor::changeUnderCursor(const QTextCursor &c) const
return QString();
}
-VcsBase::BaseAnnotationHighlighter *SubversionEditor::createAnnotationHighlighter(const QSet<QString> &changes,
- const QColor &bg) const
+VcsBase::BaseAnnotationHighlighter *SubversionEditor::createAnnotationHighlighter(const QSet<QString> &changes) const
{
- return new SubversionAnnotationHighlighter(changes, bg);
+ return new SubversionAnnotationHighlighter(changes);
}
QStringList SubversionEditor::annotationPreviousVersions(const QString &v) const
diff --git a/src/plugins/subversion/subversioneditor.h b/src/plugins/subversion/subversioneditor.h
index ee883255a5..f59e5138fb 100644
--- a/src/plugins/subversion/subversioneditor.h
+++ b/src/plugins/subversion/subversioneditor.h
@@ -48,7 +48,7 @@ public:
private:
QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const;
- VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
+ VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const;
QStringList annotationPreviousVersions(const QString &) const;
mutable QRegExp m_changeNumberPattern;
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 4b34ea0132..15db797efc 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -5645,6 +5645,12 @@ void BaseTextEditorWidget::setFontSettings(const TextEditor::FontSettings &fs)
slotUpdateExtraAreaWidth(); // Adjust to new font width
updateCurrentLineHighlight(); // Make sure it takes the new color
+
+ SyntaxHighlighter *highlighter = baseTextDocument()->syntaxHighlighter();
+ if (highlighter) {
+ highlighter->setFontSettings(fs);
+ highlighter->rehighlight();
+ }
}
void BaseTextEditorWidget::setTabSettings(const TabSettings &ts)
diff --git a/src/plugins/texteditor/generichighlighter/highlighter.cpp b/src/plugins/texteditor/generichighlighter/highlighter.cpp
index d511e7a44c..43c6e587b8 100644
--- a/src/plugins/texteditor/generichighlighter/highlighter.cpp
+++ b/src/plugins/texteditor/generichighlighter/highlighter.cpp
@@ -60,7 +60,28 @@ Highlighter::Highlighter(QTextDocument *parent) :
m_persistentObservableStatesCounter(PersistentsStart),
m_dynamicContextsCounter(0),
m_isBroken(false)
-{}
+{
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty()) {
+ categories << TextEditor::C_TEXT
+ << TextEditor::C_VISUAL_WHITESPACE
+ << TextEditor::C_KEYWORD
+ << TextEditor::C_TYPE
+ << TextEditor::C_COMMENT
+ << TextEditor::C_NUMBER
+ << TextEditor::C_NUMBER
+ << TextEditor::C_NUMBER
+ << TextEditor::C_STRING
+ << TextEditor::C_STRING
+ << TextEditor::C_TEXT
+ << TextEditor::C_TEXT
+ << TextEditor::C_TEXT
+ << TextEditor::C_TEXT
+ << TextEditor::C_TEXT;
+ }
+
+ setTextFormatCategories(categories);
+}
Highlighter::~Highlighter()
{}
@@ -82,19 +103,14 @@ Highlighter::KateFormatMap::KateFormatMap()
m_ids.insert(QLatin1String("dsChar"), Highlighter::Char);
m_ids.insert(QLatin1String("dsString"), Highlighter::String);
m_ids.insert(QLatin1String("dsComment"), Highlighter::Comment);
- m_ids.insert(QLatin1String("dsOthers"), Highlighter::Others);
m_ids.insert(QLatin1String("dsAlert"), Highlighter::Alert);
+ m_ids.insert(QLatin1String("dsError"), Highlighter::Error);
m_ids.insert(QLatin1String("dsFunction"), Highlighter::Function);
m_ids.insert(QLatin1String("dsRegionMarker"), Highlighter::RegionMarker);
- m_ids.insert(QLatin1String("dsError"), Highlighter::Error);
-}
-
-void Highlighter::configureFormat(TextFormatId id, const QTextCharFormat &format)
-{
- m_creatorFormats[id] = format;
+ m_ids.insert(QLatin1String("dsOthers"), Highlighter::Others);
}
-void Highlighter::setDefaultContext(const QSharedPointer<Context> &defaultContext)
+void Highlighter::setDefaultContext(const QSharedPointer<Context> &defaultContext)
{
m_defaultContext = defaultContext;
m_persistentObservableStates.insert(m_defaultContext->name(), Default);
@@ -140,7 +156,7 @@ void Highlighter::highlightBlock(const QString &text)
}
}
- applyFormatToSpaces(text, m_creatorFormats.value(VisualWhitespace));
+ applyFormatToSpaces(text, formatForCategory(VisualWhitespace));
}
void Highlighter::setupDataForBlock(const QString &text)
@@ -388,34 +404,30 @@ void Highlighter::applyFormat(int offset,
return;
}
- TextFormatId formatId = m_kateFormats.m_ids.value(itemData->style());
+ TextFormatId formatId = m_kateFormats.m_ids.value(itemData->style(), Normal);
if (formatId != Normal) {
- QHash<TextFormatId, QTextCharFormat>::const_iterator cit =
- m_creatorFormats.constFind(formatId);
- if (cit != m_creatorFormats.constEnd()) {
- QTextCharFormat format = cit.value();
- if (itemData->isCustomized()) {
- // Please notice that the following are applied every time for item data which have
- // customizations. The configureFormats method could be used to provide a "one time"
- // configuration, but it would probably require to traverse all item data from all
- // definitions available/loaded (either to set the values or for some "notifying"
- // strategy). This is because the highlighter does not really know on which
- // definition(s) it is working. Since not many item data specify customizations I
- // think this approach would fit better. If there are other ideas...
- if (itemData->color().isValid())
- format.setForeground(itemData->color());
- if (itemData->isItalicSpecified())
- format.setFontItalic(itemData->isItalic());
- if (itemData->isBoldSpecified())
- format.setFontWeight(toFontWeight(itemData->isBold()));
- if (itemData->isUnderlinedSpecified())
- format.setFontUnderline(itemData->isUnderlined());
- if (itemData->isStrikeOutSpecified())
- format.setFontStrikeOut(itemData->isStrikeOut());
- }
-
- setFormat(offset, count, format);
+ QTextCharFormat format = formatForCategory(formatId);
+ if (itemData->isCustomized()) {
+ // Please notice that the following are applied every time for item data which have
+ // customizations. The configureFormats method could be used to provide a "one time"
+ // configuration, but it would probably require to traverse all item data from all
+ // definitions available/loaded (either to set the values or for some "notifying"
+ // strategy). This is because the highlighter does not really know on which
+ // definition(s) it is working. Since not many item data specify customizations I
+ // think this approach would fit better. If there are other ideas...
+ if (itemData->color().isValid())
+ format.setForeground(itemData->color());
+ if (itemData->isItalicSpecified())
+ format.setFontItalic(itemData->isItalic());
+ if (itemData->isBoldSpecified())
+ format.setFontWeight(toFontWeight(itemData->isBold()));
+ if (itemData->isUnderlinedSpecified())
+ format.setFontUnderline(itemData->isUnderlined());
+ if (itemData->isStrikeOutSpecified())
+ format.setFontStrikeOut(itemData->isStrikeOut());
}
+
+ setFormat(offset, count, format);
}
}
diff --git a/src/plugins/texteditor/generichighlighter/highlighter.h b/src/plugins/texteditor/generichighlighter/highlighter.h
index dc3445663a..5dbe5e6fc6 100644
--- a/src/plugins/texteditor/generichighlighter/highlighter.h
+++ b/src/plugins/texteditor/generichighlighter/highlighter.h
@@ -65,12 +65,12 @@ public:
VisualWhitespace,
Keyword,
DataType,
+ Comment,
Decimal,
BaseN,
Float,
Char,
String,
- Comment,
Alert,
Error,
Function,
@@ -78,7 +78,6 @@ public:
Others
};
- void configureFormat(TextFormatId id, const QTextCharFormat &format);
void setTabSettings(const TabSettings &ts);
void setDefaultContext(const QSharedPointer<Context> &defaultContext);
@@ -134,7 +133,6 @@ private:
QHash<QString, TextFormatId> m_ids;
};
static const KateFormatMap m_kateFormats;
- QHash<TextFormatId, QTextCharFormat> m_creatorFormats;
struct BlockData : TextBlockUserData
{
diff --git a/src/plugins/texteditor/plaintexteditor.cpp b/src/plugins/texteditor/plaintexteditor.cpp
index 8bd4d46239..61103b7bbf 100644
--- a/src/plugins/texteditor/plaintexteditor.cpp
+++ b/src/plugins/texteditor/plaintexteditor.cpp
@@ -38,15 +38,12 @@
#include "manager.h"
#include "context.h"
#include "normalindenter.h"
-#include "fontsettings.h"
#include <coreplugin/coreconstants.h>
#include <coreplugin/icore.h>
#include <QSharedPointer>
-#include <QDebug>
-
using namespace Core;
using namespace TextEditor::Internal;
@@ -94,30 +91,6 @@ void PlainTextEditorWidget::unCommentSelection()
Utils::unCommentSelection(this, m_commentDefinition);
}
-void PlainTextEditorWidget::setFontSettings(const FontSettings &fs)
-{
- BaseTextEditorWidget::setFontSettings(fs);
-
- if (baseTextDocument()->syntaxHighlighter()) {
- Highlighter *highlighter =
- static_cast<Highlighter *>(baseTextDocument()->syntaxHighlighter());
-
- highlighter->configureFormat(Highlighter::VisualWhitespace, fs.toTextCharFormat(C_VISUAL_WHITESPACE));
- highlighter->configureFormat(Highlighter::Keyword, fs.toTextCharFormat(C_KEYWORD));
- highlighter->configureFormat(Highlighter::DataType, fs.toTextCharFormat(C_TYPE));
- highlighter->configureFormat(Highlighter::Comment, fs.toTextCharFormat(C_COMMENT));
- // Using C_NUMBER for all kinds of numbers.
- highlighter->configureFormat(Highlighter::Decimal, fs.toTextCharFormat(C_NUMBER));
- highlighter->configureFormat(Highlighter::BaseN, fs.toTextCharFormat(C_NUMBER));
- highlighter->configureFormat(Highlighter::Float, fs.toTextCharFormat(C_NUMBER));
- // Using C_STRING for strings and chars.
- highlighter->configureFormat(Highlighter::Char, fs.toTextCharFormat(C_STRING));
- highlighter->configureFormat(Highlighter::String, fs.toTextCharFormat(C_STRING));
-
- highlighter->rehighlight();
- }
-}
-
void PlainTextEditorWidget::setTabSettings(const TextEditor::TabSettings &ts)
{
BaseTextEditorWidget::setTabSettings(ts);
diff --git a/src/plugins/texteditor/plaintexteditor.h b/src/plugins/texteditor/plaintexteditor.h
index 05f2be6fcb..b1540b467b 100644
--- a/src/plugins/texteditor/plaintexteditor.h
+++ b/src/plugins/texteditor/plaintexteditor.h
@@ -67,7 +67,6 @@ public:
public slots:
virtual void unCommentSelection();
- virtual void setFontSettings(const FontSettings &fs);
virtual void setTabSettings(const TextEditor::TabSettings &);
private slots:
diff --git a/src/plugins/texteditor/syntaxhighlighter.cpp b/src/plugins/texteditor/syntaxhighlighter.cpp
index de9c5acd09..0ad601f162 100644
--- a/src/plugins/texteditor/syntaxhighlighter.cpp
+++ b/src/plugins/texteditor/syntaxhighlighter.cpp
@@ -30,6 +30,10 @@
#include "syntaxhighlighter.h"
#include "basetextdocument.h"
#include "basetextdocumentlayout.h"
+#include "texteditorsettings.h"
+#include "fontsettings.h"
+
+#include <utils/qtcassert.h>
#include <qtimer.h>
@@ -70,12 +74,15 @@ public:
}
void applyFormatChanges(int from, int charsRemoved, int charsAdded);
+ void updateFormatsForCategories(const TextEditor::FontSettings &fontSettings);
QVector<QTextCharFormat> formatChanges;
QTextBlock currentBlock;
bool rehighlightPending;
bool inReformatBlocks;
BaseTextDocumentLayout::FoldValidator foldValidator;
+ QVector<QTextCharFormat> formats;
+ QVector<TextEditor::TextStyle> formatCategories;
};
static bool adjustRange(QTextLayout::FormatRange &range, int from, int charsRemoved, int charsAdded) {
@@ -784,4 +791,31 @@ QList<QColor> SyntaxHighlighter::generateColors(int n, const QColor &background)
return result;
}
+void SyntaxHighlighter::setFontSettings(const TextEditor::FontSettings &fontSettings)
+{
+ Q_D(SyntaxHighlighter);
+ d->updateFormatsForCategories(fontSettings);
+}
+
+void SyntaxHighlighter::setTextFormatCategories(const QVector<TextEditor::TextStyle> &categories)
+{
+ Q_D(SyntaxHighlighter);
+ d->formatCategories = categories;
+ d->updateFormatsForCategories(TextEditorSettings::instance()->fontSettings());
+}
+
+QTextCharFormat SyntaxHighlighter::formatForCategory(int category) const
+{
+ Q_D(const SyntaxHighlighter);
+ QTC_ASSERT(d->formats.size() > category, return QTextCharFormat());
+
+ return d->formats.at(category);
+}
+
+void SyntaxHighlighterPrivate::updateFormatsForCategories(const TextEditor::FontSettings &fontSettings)
+{
+ formats = fontSettings.toTextCharFormats(formatCategories);
+}
+
+
#include "moc_syntaxhighlighter.cpp"
diff --git a/src/plugins/texteditor/syntaxhighlighter.h b/src/plugins/texteditor/syntaxhighlighter.h
index 8cee09a209..e66fa86f72 100644
--- a/src/plugins/texteditor/syntaxhighlighter.h
+++ b/src/plugins/texteditor/syntaxhighlighter.h
@@ -31,7 +31,7 @@
#define TEXTEDITOR_SYNTAXHIGHLIGHTER_H
#include "texteditor_global.h"
-
+#include <texteditor/texteditorconstants.h>
#include <QObject>
#include <QTextLayout>
@@ -48,6 +48,7 @@ QT_END_NAMESPACE
namespace TextEditor {
class BaseTextDocument;
+class FontSettings;
class SyntaxHighlighterPrivate;
class TEXTEDITOR_EXPORT SyntaxHighlighter : public QObject
@@ -68,11 +69,15 @@ public:
static QList<QColor> generateColors(int n, const QColor &background);
+ // Don't call in constructors of derived classes
+ virtual void setFontSettings(const TextEditor::FontSettings &fontSettings);
public Q_SLOTS:
void rehighlight();
void rehighlightBlock(const QTextBlock &block);
protected:
+ void setTextFormatCategories(const QVector<TextEditor::TextStyle> &categories);
+ QTextCharFormat formatForCategory(int categoryIndex) const;
virtual void highlightBlock(const QString &text) = 0;
void setFormat(int start, int count, const QTextCharFormat &format);
diff --git a/src/plugins/vcsbase/baseannotationhighlighter.cpp b/src/plugins/vcsbase/baseannotationhighlighter.cpp
index 3a04647103..841b7ed479 100644
--- a/src/plugins/vcsbase/baseannotationhighlighter.cpp
+++ b/src/plugins/vcsbase/baseannotationhighlighter.cpp
@@ -28,6 +28,7 @@
****************************************************************************/
#include "baseannotationhighlighter.h"
+#include <texteditor/fontsettings.h>
#include <QDebug>
#include <QColor>
@@ -51,34 +52,63 @@ typedef QMap<QString, QTextCharFormat> ChangeNumberFormatMap;
*/
namespace VcsBase {
-namespace Internal {
class BaseAnnotationHighlighterPrivate
{
+ BaseAnnotationHighlighter *q_ptr;
+ Q_DECLARE_PUBLIC(BaseAnnotationHighlighter)
public:
+ enum Formats {
+ BackgroundFormat // C_TEXT
+ };
+
+ BaseAnnotationHighlighterPrivate();
+
+ void updateOtherFormats();
+
ChangeNumberFormatMap m_changeNumberMap;
QColor m_background;
};
-} // namespace Internal
+BaseAnnotationHighlighterPrivate::BaseAnnotationHighlighterPrivate()
+ : q_ptr(0)
+{
+}
+
+void BaseAnnotationHighlighterPrivate::updateOtherFormats()
+{
+ Q_Q(BaseAnnotationHighlighter);
+ m_background = q->formatForCategory(BackgroundFormat).brushProperty(QTextFormat::BackgroundBrush).color();
+ q->setChangeNumbers(m_changeNumberMap.keys().toSet());
+}
+
BaseAnnotationHighlighter::BaseAnnotationHighlighter(const ChangeNumbers &changeNumbers,
- const QColor &bg,
QTextDocument *document) :
TextEditor::SyntaxHighlighter(document),
- d(new Internal::BaseAnnotationHighlighterPrivate)
+ d_ptr(new BaseAnnotationHighlighterPrivate())
{
- d->m_background = bg;
+ d_ptr->q_ptr = this;
+
+ Q_D(BaseAnnotationHighlighter);
+
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty())
+ categories << TextEditor::C_TEXT;
+
+ setTextFormatCategories(categories);
+ d->updateOtherFormats();
+
setChangeNumbers(changeNumbers);
}
BaseAnnotationHighlighter::~BaseAnnotationHighlighter()
{
- delete d;
}
void BaseAnnotationHighlighter::setChangeNumbers(const ChangeNumbers &changeNumbers)
{
+ Q_D(BaseAnnotationHighlighter);
d->m_changeNumberMap.clear();
if (!changeNumbers.isEmpty()) {
// Assign a color gradient to annotation change numbers. Give
@@ -99,6 +129,7 @@ void BaseAnnotationHighlighter::setChangeNumbers(const ChangeNumbers &changeNumb
void BaseAnnotationHighlighter::highlightBlock(const QString &text)
{
+ Q_D(BaseAnnotationHighlighter);
if (text.isEmpty() || d->m_changeNumberMap.empty())
return;
const QString change = changeNumber(text);
@@ -107,10 +138,11 @@ void BaseAnnotationHighlighter::highlightBlock(const QString &text)
setFormat(0, text.length(), it.value());
}
-void BaseAnnotationHighlighter::setBackgroundColor(const QColor &color)
+void BaseAnnotationHighlighter::setFontSettings(const TextEditor::FontSettings &fontSettings)
{
- d->m_background = color;
- setChangeNumbers(d->m_changeNumberMap.keys().toSet());
+ Q_D(BaseAnnotationHighlighter);
+ SyntaxHighlighter::setFontSettings(fontSettings);
+ d->updateOtherFormats();
}
} // namespace VcsBase
diff --git a/src/plugins/vcsbase/baseannotationhighlighter.h b/src/plugins/vcsbase/baseannotationhighlighter.h
index e1845477e4..ff5fdfb1a4 100644
--- a/src/plugins/vcsbase/baseannotationhighlighter.h
+++ b/src/plugins/vcsbase/baseannotationhighlighter.h
@@ -35,17 +35,16 @@
#include <texteditor/syntaxhighlighter.h>
namespace VcsBase {
-namespace Internal {
class BaseAnnotationHighlighterPrivate;
-} // namespace Internal
class VCSBASE_EXPORT BaseAnnotationHighlighter : public TextEditor::SyntaxHighlighter
{
Q_OBJECT
+ Q_DECLARE_PRIVATE(BaseAnnotationHighlighter)
public:
typedef QSet<QString> ChangeNumbers;
- explicit BaseAnnotationHighlighter(const ChangeNumbers &changeNumbers, const QColor &bg,
+ explicit BaseAnnotationHighlighter(const ChangeNumbers &changeNumbers,
QTextDocument *document = 0);
virtual ~BaseAnnotationHighlighter();
@@ -53,13 +52,13 @@ public:
virtual void highlightBlock(const QString &text);
- void setBackgroundColor(const QColor &color);
+ virtual void setFontSettings(const TextEditor::FontSettings &fontSettings);
private:
// Implement this to return the change number of a line
virtual QString changeNumber(const QString &block) const = 0;
- Internal::BaseAnnotationHighlighterPrivate *const d;
+ QScopedPointer<BaseAnnotationHighlighterPrivate> d_ptr;
};
} // namespace VcsBase
diff --git a/src/plugins/vcsbase/diffhighlighter.cpp b/src/plugins/vcsbase/diffhighlighter.cpp
index 9a26fa5f58..5798c30a73 100644
--- a/src/plugins/vcsbase/diffhighlighter.cpp
+++ b/src/plugins/vcsbase/diffhighlighter.cpp
@@ -72,8 +72,7 @@ enum DiffFormats {
DiffInFormat,
DiffOutFormat,
DiffFileFormat,
- DiffLocationFormat,
- NumDiffFormats
+ DiffLocationFormat
};
enum FoldingState {
@@ -83,61 +82,92 @@ enum FoldingState {
Location
};
+}; // namespace Internal;
+
+static inline QTextCharFormat invertedColorFormat(const QTextCharFormat &in)
+{
+ QTextCharFormat rc = in;
+ rc.setForeground(in.background());
+ rc.setBackground(in.foreground());
+ return rc;
+}
+
// --- DiffHighlighterPrivate
class DiffHighlighterPrivate
{
+ DiffHighlighter *q_ptr;
+ Q_DECLARE_PUBLIC(DiffHighlighter)
public:
DiffHighlighterPrivate(const QRegExp &filePattern);
- DiffFormats analyzeLine(const QString &block) const;
+ Internal::DiffFormats analyzeLine(const QString &block) const;
+ void updateOtherFormats();
mutable QRegExp m_filePattern;
const QString m_locationIndicator;
const QChar m_diffInIndicator;
const QChar m_diffOutIndicator;
- QTextCharFormat m_formats[NumDiffFormats];
QTextCharFormat m_addedTrailingWhiteSpaceFormat;
- FoldingState m_foldingState;
+ Internal::FoldingState m_foldingState;
};
DiffHighlighterPrivate::DiffHighlighterPrivate(const QRegExp &filePattern) :
+ q_ptr(0),
m_filePattern(filePattern),
m_locationIndicator(QLatin1String("@@")),
m_diffInIndicator(QLatin1Char('+')),
m_diffOutIndicator(QLatin1Char('-')),
- m_foldingState(StartOfFile)
+ m_foldingState(Internal::StartOfFile)
{
QTC_CHECK(filePattern.isValid());
}
-DiffFormats DiffHighlighterPrivate::analyzeLine(const QString &text) const
+Internal::DiffFormats DiffHighlighterPrivate::analyzeLine(const QString &text) const
{
// Do not match on git "--- a/" as a deleted line, check
// file first
if (m_filePattern.indexIn(text) == 0)
- return DiffFileFormat;
+ return Internal::DiffFileFormat;
if (text.startsWith(m_diffInIndicator))
- return DiffInFormat;
+ return Internal::DiffInFormat;
if (text.startsWith(m_diffOutIndicator))
- return DiffOutFormat;
+ return Internal::DiffOutFormat;
if (text.startsWith(m_locationIndicator))
- return DiffLocationFormat;
- return DiffTextFormat;
+ return Internal::DiffLocationFormat;
+ return Internal::DiffTextFormat;
}
-} // namespace Internal
+void DiffHighlighterPrivate::updateOtherFormats()
+{
+ Q_Q(DiffHighlighter);
+ m_addedTrailingWhiteSpaceFormat =
+ invertedColorFormat(q->formatForCategory(Internal::DiffInFormat));
+
+}
// --- DiffHighlighter
DiffHighlighter::DiffHighlighter(const QRegExp &filePattern) :
TextEditor::SyntaxHighlighter(static_cast<QTextDocument *>(0)),
- d(new Internal::DiffHighlighterPrivate(filePattern))
+ d_ptr(new DiffHighlighterPrivate(filePattern))
{
+ d_ptr->q_ptr = this;
+ Q_D(DiffHighlighter);
+
+ static QVector<TextEditor::TextStyle> categories;
+ if (categories.isEmpty()) {
+ categories << TextEditor::C_TEXT
+ << TextEditor::C_ADDED_LINE
+ << TextEditor::C_REMOVED_LINE
+ << TextEditor::C_DIFF_FILE
+ << TextEditor::C_DIFF_LOCATION;
+ }
+ setTextFormatCategories(categories);
+ d->updateOtherFormats();
}
DiffHighlighter::~DiffHighlighter()
{
- delete d;
}
// Check trailing spaces
@@ -157,6 +187,7 @@ static inline int trimmedLength(const QString &in)
*/
void DiffHighlighter::highlightBlock(const QString &text)
{
+ Q_D(DiffHighlighter);
if (text.isEmpty())
return;
@@ -168,13 +199,13 @@ void DiffHighlighter::highlightBlock(const QString &text)
case Internal::DiffInFormat: {
// Mark trailing whitespace.
const int trimmedLen = trimmedLength(text);
- setFormat(0, trimmedLen, d->m_formats[format]);
+ setFormat(0, trimmedLen, formatForCategory(format));
if (trimmedLen != length)
setFormat(trimmedLen, length - trimmedLen, d->m_addedTrailingWhiteSpaceFormat);
}
break;
default:
- setFormat(0, length, d->m_formats[format]);
+ setFormat(0, length, formatForCategory(format));
break;
}
@@ -234,24 +265,11 @@ void DiffHighlighter::highlightBlock(const QString &text)
}
}
-static inline QTextCharFormat invertedColorFormat(const QTextCharFormat &in)
+void DiffHighlighter::setFontSettings(const TextEditor::FontSettings &fontSettings)
{
- QTextCharFormat rc = in;
- rc.setForeground(in.background());
- rc.setBackground(in.foreground());
- return rc;
-}
-
-void DiffHighlighter::setFormats(const QVector<QTextCharFormat> &s)
-{
- if (s.size() == Internal::NumDiffFormats) {
- qCopy(s.constBegin(), s.constEnd(), d->m_formats);
- // Display trailing blanks with colors swapped
- d->m_addedTrailingWhiteSpaceFormat =
- invertedColorFormat(d->m_formats[Internal::DiffInFormat]);
- } else {
- qWarning("%s: insufficient setting size: %d", Q_FUNC_INFO, s.size());
- }
+ Q_D(DiffHighlighter);
+ SyntaxHighlighter::setFontSettings(fontSettings);
+ d->updateOtherFormats();
}
} // namespace VcsBase
diff --git a/src/plugins/vcsbase/diffhighlighter.h b/src/plugins/vcsbase/diffhighlighter.h
index be55af5fc2..6ce2692e18 100644
--- a/src/plugins/vcsbase/diffhighlighter.h
+++ b/src/plugins/vcsbase/diffhighlighter.h
@@ -44,23 +44,22 @@ namespace TextEditor { class FontSettingsPage; }
namespace VcsBase {
-namespace Internal { class DiffHighlighterPrivate; }
+class DiffHighlighterPrivate;
class VCSBASE_EXPORT DiffHighlighter : public TextEditor::SyntaxHighlighter
{
Q_OBJECT
-
+ Q_DECLARE_PRIVATE(DiffHighlighter)
public:
explicit DiffHighlighter(const QRegExp &filePattern);
~DiffHighlighter();
void highlightBlock(const QString &text);
- // Set formats from a sequence of type QTextCharFormat
- void setFormats(const QVector<QTextCharFormat> &s);
+ virtual void setFontSettings(const TextEditor::FontSettings &fontSettings);
private:
- Internal::DiffHighlighterPrivate *const d;
+ QScopedPointer<DiffHighlighterPrivate> d_ptr;
};
} // namespace VcsBase
diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp
index 1b90d8a284..b2f24db908 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditor.cpp
@@ -41,7 +41,6 @@
#include <projectexplorer/session.h>
#include <texteditor/basetextdocument.h>
#include <texteditor/basetextdocumentlayout.h>
-#include <texteditor/fontsettings.h>
#include <texteditor/texteditorsettings.h>
#include <utils/qtcassert.h>
@@ -571,8 +570,6 @@ public:
bool m_mouseDragging;
QList<AbstractTextCursorHandler *> m_textCursorHandlers;
- QColor m_backgroundColor;
-
private:
QComboBox *m_entriesComboBox;
};
@@ -1048,7 +1045,7 @@ void VcsBaseEditorWidget::slotActivateAnnotation()
ah->setChangeNumbers(changes);
ah->rehighlight();
} else {
- baseTextDocument()->setSyntaxHighlighter(createAnnotationHighlighter(changes, d->m_backgroundColor));
+ baseTextDocument()->setSyntaxHighlighter(createAnnotationHighlighter(changes));
}
}
@@ -1186,33 +1183,6 @@ void VcsBaseEditorWidget::reportCommandFinished(bool ok, int exitCode, const QVa
setPlainText(tr("Failed to retrieve data."));
}
-void VcsBaseEditorWidget::setFontSettings(const TextEditor::FontSettings &fs)
-{
- TextEditor::BaseTextEditorWidget::setFontSettings(fs);
- d->m_backgroundColor = fs.toTextCharFormat(TextEditor::C_TEXT)
- .brushProperty(QTextFormat::BackgroundBrush).color();
-
- if (d->m_parameters->type == AnnotateOutput) {
- if (BaseAnnotationHighlighter *highlighter = qobject_cast<BaseAnnotationHighlighter *>(baseTextDocument()->syntaxHighlighter())) {
- highlighter->setBackgroundColor(d->m_backgroundColor);
- highlighter->rehighlight();
- }
- } else if (hasDiff()) {
- if (DiffHighlighter *highlighter = qobject_cast<DiffHighlighter*>(baseTextDocument()->syntaxHighlighter())) {
- static QVector<TextEditor::TextStyle> categories;
- if (categories.isEmpty()) {
- categories << TextEditor::C_TEXT
- << TextEditor::C_ADDED_LINE
- << TextEditor::C_REMOVED_LINE
- << TextEditor::C_DIFF_FILE
- << TextEditor::C_DIFF_LOCATION;
- }
- highlighter->setFormats(fs.toTextCharFormats(categories));
- highlighter->rehighlight();
- }
- }
-}
-
const VcsBaseEditorParameters *VcsBaseEditorWidget::findType(const VcsBaseEditorParameters *array,
int arraySize,
EditorContentType et)
diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h
index 4d0ee1c901..b438b93bbe 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.h
+++ b/src/plugins/vcsbase/vcsbaseeditor.h
@@ -217,9 +217,6 @@ protected:
void mouseDoubleClickEvent(QMouseEvent *e);
void keyPressEvent(QKeyEvent *);
-public slots:
- void setFontSettings(const TextEditor::FontSettings &);
-
private slots:
void slotActivateAnnotation();
void slotPopulateDiffBrowser();
@@ -244,8 +241,7 @@ protected:
// Implement to identify a change number at the cursor position
virtual QString changeUnderCursor(const QTextCursor &) const = 0;
// Factory functions for highlighters
- virtual BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes,
- const QColor &bg) const = 0;
+ virtual BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const = 0;
// Returns a local file name from the diff file specification
// (text cursor at position above change hunk)
QString fileNameFromDiffSpecification(const QTextBlock &inBlock) const;