diff options
Diffstat (limited to 'src/plugins/texteditor/syntaxhighlighter.cpp')
-rw-r--r-- | src/plugins/texteditor/syntaxhighlighter.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/plugins/texteditor/syntaxhighlighter.cpp b/src/plugins/texteditor/syntaxhighlighter.cpp index 0ed00af389d..34f4b1c7772 100644 --- a/src/plugins/texteditor/syntaxhighlighter.cpp +++ b/src/plugins/texteditor/syntaxhighlighter.cpp @@ -81,6 +81,10 @@ void SyntaxHighlighter::delayedRehighlight() if (!d->rehighlightPending) return; d->rehighlightPending = false; + + if (document()->isEmpty()) + return; + rehighlight(); } @@ -197,6 +201,10 @@ void SyntaxHighlighterPrivate::reformatBlocks(int from, int charsRemoved, int ch QList<SyntaxHighlighter::Result> vecRes; + SyntaxHighlighter::Result resStart; + resStart.m_state = SyntaxHighlighter::State::Start; + vecRes << resStart; + while (block.isValid() && (block.position() < endPosition || forceHighlightOfNextBlock)) { if (QThread::currentThread()->isInterruptionRequested()) break; @@ -758,7 +766,10 @@ void SyntaxHighlighter::setExtraFormats(const QTextBlock &block, SyntaxHighlighter::Result res; res.m_formatRanges = block.layout()->formats(); res.fillByBlock(block); - emit resultsReady({res}); + res.m_state = SyntaxHighlighter::State::Extras; + SyntaxHighlighter::Result resDone; + resDone.m_state = SyntaxHighlighter::State::Done; + emit resultsReady({res, resDone}); document()->markContentsDirty(block.position(), blockLength - 1); d->inReformatBlocks = wasInReformatBlocks; @@ -784,7 +795,10 @@ void SyntaxHighlighter::clearExtraFormats(const QTextBlock &block) SyntaxHighlighter::Result res; res.m_formatRanges = block.layout()->formats(); res.fillByBlock(block); - emit resultsReady({res}); + res.m_state = SyntaxHighlighter::State::Extras; + SyntaxHighlighter::Result resDone; + resDone.m_state = SyntaxHighlighter::State::Done; + emit resultsReady({res, resDone}); document()->markContentsDirty(block.position(), blockLength - 1); d->inReformatBlocks = wasInReformatBlocks; |