From 1fe975b1ad12b674fb0d647a5d62da545fb86bf4 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Mon, 20 Aug 2018 19:45:56 +0800 Subject: [PATCH] PegMarkdownHighlighter: recognize code block among new blocks --- src/pegmarkdownhighlighter.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pegmarkdownhighlighter.cpp b/src/pegmarkdownhighlighter.cpp index 723fb580..aa8f5234 100644 --- a/src/pegmarkdownhighlighter.cpp +++ b/src/pegmarkdownhighlighter.cpp @@ -115,9 +115,21 @@ void PegMarkdownHighlighter::highlightBlock(const QString &p_text) int blockNum = block.blockNumber(); bool isCodeBlock = currentBlockState() == HighlightBlockState::CodeBlock; + bool isNewBlock = block.userData() == NULL; VTextBlockData *blockData = VTextBlockData::blockData(block); QVector *cache = &blockData->getBlockHighlightCache(); + // Fast parse can not cross multiple empty lines in code block, which + // cause the wrong parse results. + if (isNewBlock) { + int pstate = previousBlockState(); + if (pstate == HighlightBlockState::CodeBlock + || pstate == HighlightBlockState::CodeBlockStart) { + setCurrentBlockState(HighlightBlockState::CodeBlock); + isCodeBlock = true; + } + } + bool cacheValid = true; if (result->matched(m_timeStamp)) { if (preHighlightSingleFormatBlock(result->m_blocksHighlights,