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
This commit is contained in:
Leandro Melo
2010-09-30 09:12:59 +02:00
parent c9e819b537
commit 129b53f616
7 changed files with 24 additions and 20 deletions

View File

@@ -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);

View File

@@ -201,5 +201,6 @@ void ProFileHighlighter::highlightBlock(const QString &text)
if (i >= text.length())
break;
}
}
applyFormatToSpaces(text, m_formats[ProfileVisualWhitespaceFormat]);
}

View File

@@ -46,6 +46,7 @@ public:
ProfileVariableFormat,
ProfileFunctionFormat,
ProfileCommentFormat,
ProfileVisualWhitespaceFormat,
NumProfileFormats
};

View File

@@ -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());

View File

@@ -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;

View File

@@ -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

View File

@@ -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);