summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2021-01-11 19:21:08 (GMT)
committerGitHub <noreply@github.com>2021-01-11 19:21:08 (GMT)
commitf81308d9a8f535c8a149a8173fcccd772bf0cd92 (patch)
tree47cddd21d26187307854c54e3b074109f9ab68a1
parent21363d3930fe9f5576b5a7da910877ae9151372b (diff)
parent6213c408be49685c6d9909b8ec09be5ae9680598 (diff)
downloadDoxygen-f81308d9a8f535c8a149a8173fcccd772bf0cd92.zip
Doxygen-f81308d9a8f535c8a149a8173fcccd772bf0cd92.tar.gz
Doxygen-f81308d9a8f535c8a149a8173fcccd772bf0cd92.tar.bz2
Merge pull request #8314 from albert-github/feature/issue_8308
issue #8308 Verbatim block followed by markdown header breaks verbatim block
-rw-r--r--src/markdown.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/markdown.cpp b/src/markdown.cpp
index 93d143d..2bc8206 100644
--- a/src/markdown.cpp
+++ b/src/markdown.cpp
@@ -2399,7 +2399,41 @@ QCString Markdown::processBlocks(const QCString &s,int indent)
QCString lang;
blockIndent = indent;
//printf("isHeaderLine(%s)=%d\n",QCString(data+i).left(size-i).data(),level);
- if ((level=isHeaderline(data+i,size-i,TRUE))>0)
+ QCString endBlockName;
+ if (data[i]=='@' || data[i]=='\\') endBlockName = isBlockCommand(data+i,i,size-i);
+ if (!endBlockName.isEmpty())
+ {
+ // handle previous line
+ if (isLinkRef(data+pi,i-pi,id,link,title))
+ {
+ m_linkRefs.insert({id.lower().str(),LinkRef(link,title)});
+ }
+ else
+ {
+ writeOneLineHeaderOrRuler(data+pi,i-pi);
+ }
+ m_out.addChar(data[i]);
+ i++;
+ int l = endBlockName.length();
+ while (i<size-l)
+ {
+ if ((data[i]=='\\' || data[i]=='@') && // command
+ data[i-1]!='\\' && data[i-1]!='@') // not escaped
+ {
+ if (qstrncmp(&data[i+1],endBlockName,l)==0)
+ {
+ m_out.addChar(data[i]);
+ m_out.addStr(endBlockName);
+ pi=i;
+ i+=l+1;
+ break;
+ }
+ }
+ m_out.addChar(data[i]);
+ i++;
+ }
+ }
+ else if ((level=isHeaderline(data+i,size-i,TRUE))>0)
{
//printf("Found header at %d-%d\n",i,end);
while (pi<size && data[pi]==' ') pi++;