From 129b53f616e9e4437811c7a12e22c1af80f0baaa Mon Sep 17 00:00:00 2001 From: Leandro Melo <leandro.melo@nokia.com> Date: Thu, 30 Sep 2010 09:12:59 +0200 Subject: [PATCH] Profile editor: Add proper format to white spaces. The generic highlighter already provided a method for this. This method was then lifted to the base syntax highlighter and it is now used by the profile highlighter. Reviewed-by: Roberto Raggi Task-number: QTCREATORBUG-2448 --- .../qt4projectmanager/profileeditor.cpp | 3 ++- .../qt4projectmanager/profilehighlighter.cpp | 3 ++- .../qt4projectmanager/profilehighlighter.h | 1 + .../generichighlighter/highlighter.cpp | 18 +----------------- .../generichighlighter/highlighter.h | 1 - src/plugins/texteditor/syntaxhighlighter.cpp | 16 ++++++++++++++++ src/plugins/texteditor/syntaxhighlighter.h | 2 ++ 7 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/plugins/qt4projectmanager/profileeditor.cpp b/src/plugins/qt4projectmanager/profileeditor.cpp index 8b79faf1836..d7cf57278af 100644 --- a/src/plugins/qt4projectmanager/profileeditor.cpp +++ b/src/plugins/qt4projectmanager/profileeditor.cpp @@ -140,7 +140,8 @@ void ProFileEditor::setFontSettings(const TextEditor::FontSettings &fs) if (categories.isEmpty()) { categories << QLatin1String(TextEditor::Constants::C_TYPE) << QLatin1String(TextEditor::Constants::C_KEYWORD) - << QLatin1String(TextEditor::Constants::C_COMMENT); + << QLatin1String(TextEditor::Constants::C_COMMENT) + << QLatin1String(TextEditor::Constants::C_VISUAL_WHITESPACE); } const QVector<QTextCharFormat> formats = fs.toTextCharFormats(categories); diff --git a/src/plugins/qt4projectmanager/profilehighlighter.cpp b/src/plugins/qt4projectmanager/profilehighlighter.cpp index cf9e72d2ca0..14daeee9f63 100644 --- a/src/plugins/qt4projectmanager/profilehighlighter.cpp +++ b/src/plugins/qt4projectmanager/profilehighlighter.cpp @@ -201,5 +201,6 @@ void ProFileHighlighter::highlightBlock(const QString &text) if (i >= text.length()) break; } -} + applyFormatToSpaces(text, m_formats[ProfileVisualWhitespaceFormat]); +} diff --git a/src/plugins/qt4projectmanager/profilehighlighter.h b/src/plugins/qt4projectmanager/profilehighlighter.h index 87dadce27e1..78ede9d738c 100644 --- a/src/plugins/qt4projectmanager/profilehighlighter.h +++ b/src/plugins/qt4projectmanager/profilehighlighter.h @@ -46,6 +46,7 @@ public: ProfileVariableFormat, ProfileFunctionFormat, ProfileCommentFormat, + ProfileVisualWhitespaceFormat, NumProfileFormats }; diff --git a/src/plugins/texteditor/generichighlighter/highlighter.cpp b/src/plugins/texteditor/generichighlighter/highlighter.cpp index 98de86d7fa5..3775a63d51f 100644 --- a/src/plugins/texteditor/generichighlighter/highlighter.cpp +++ b/src/plugins/texteditor/generichighlighter/highlighter.cpp @@ -140,7 +140,7 @@ void Highlighter::highlightBlock(const QString &text) } } - applyVisualWhitespaceFormat(text); + applyFormatToSpaces(text, m_creatorFormats.value(VisualWhitespace)); } void Highlighter::setupDataForBlock(const QString &text) @@ -408,22 +408,6 @@ void Highlighter::applyFormat(int offset, } } -void Highlighter::applyVisualWhitespaceFormat(const QString &text) -{ - int offset = 0; - const int length = text.length(); - while (offset < length) { - if (text.at(offset).isSpace()) { - int start = offset++; - while (offset < length && text.at(offset).isSpace()) - ++offset; - setFormat(start, offset - start, m_creatorFormats.value(VisualWhitespace)); - } else { - ++offset; - } - } -} - void Highlighter::createWillContinueBlock() { BlockData *data = blockData(currentBlockUserData()); diff --git a/src/plugins/texteditor/generichighlighter/highlighter.h b/src/plugins/texteditor/generichighlighter/highlighter.h index 43b7b58df3e..07417972595 100644 --- a/src/plugins/texteditor/generichighlighter/highlighter.h +++ b/src/plugins/texteditor/generichighlighter/highlighter.h @@ -123,7 +123,6 @@ private: int count, const QString &itemDataName, const QSharedPointer<HighlightDefinition> &definition); - void applyVisualWhitespaceFormat(const QString &text); void applyRegionBasedFolding() const; void applyIndentationBasedFolding(const QString &text) const; diff --git a/src/plugins/texteditor/syntaxhighlighter.cpp b/src/plugins/texteditor/syntaxhighlighter.cpp index b02d6ef9c6c..346c735b26f 100644 --- a/src/plugins/texteditor/syntaxhighlighter.cpp +++ b/src/plugins/texteditor/syntaxhighlighter.cpp @@ -535,6 +535,22 @@ void SyntaxHighlighter::setFormat(int start, int count, const QFont &font) setFormat(start, count, format); } +void SyntaxHighlighter::applyFormatToSpaces(const QString &text, const QTextCharFormat &format) +{ + int offset = 0; + const int length = text.length(); + while (offset < length) { + if (text.at(offset).isSpace()) { + int start = offset++; + while (offset < length && text.at(offset).isSpace()) + ++offset; + setFormat(start, offset - start, format); + } else { + ++offset; + } + } +} + /*! \fn QTextCharFormat SyntaxHighlighter::format(int position) const diff --git a/src/plugins/texteditor/syntaxhighlighter.h b/src/plugins/texteditor/syntaxhighlighter.h index 5b6722b5a34..a010facf640 100644 --- a/src/plugins/texteditor/syntaxhighlighter.h +++ b/src/plugins/texteditor/syntaxhighlighter.h @@ -89,6 +89,8 @@ protected: void setFormat(int start, int count, const QFont &font); QTextCharFormat format(int pos) const; + void applyFormatToSpaces(const QString &text, const QTextCharFormat &format); + int previousBlockState() const; int currentBlockState() const; void setCurrentBlockState(int newState); -- GitLab