PegMarkdownHighlighter: recognize code block among new blocks

This commit is contained in:
Le Tan 2018-08-20 19:45:56 +08:00
parent c2bb490378
commit 1fe975b1ad

View File

@ -115,9 +115,21 @@ void PegMarkdownHighlighter::highlightBlock(const QString &p_text)
int blockNum = block.blockNumber(); int blockNum = block.blockNumber();
bool isCodeBlock = currentBlockState() == HighlightBlockState::CodeBlock; bool isCodeBlock = currentBlockState() == HighlightBlockState::CodeBlock;
bool isNewBlock = block.userData() == NULL;
VTextBlockData *blockData = VTextBlockData::blockData(block); VTextBlockData *blockData = VTextBlockData::blockData(block);
QVector<HLUnit> *cache = &blockData->getBlockHighlightCache(); QVector<HLUnit> *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; bool cacheValid = true;
if (result->matched(m_timeStamp)) { if (result->matched(m_timeStamp)) {
if (preHighlightSingleFormatBlock(result->m_blocksHighlights, if (preHighlightSingleFormatBlock(result->m_blocksHighlights,