Repository :
https://github.com/colorer/Colorer-schemes
On branch : master
Link :
https://github.com/colorer/Colorer-schemes/commit/de6df5f720e1cdfe43f8f1e37d7f55563413fe0b
>---------------------------------------------------------------
commit de6df5f720e1cdfe43f8f1e37d7f55563413fe0b
Author: exkrexpexfex <
75270873+e...@users.noreply.github.com>
Date: Wed Jan 28 20:57:53 2026 +0300
markdown: improve HTML handling (inline tags and CommonMark blocks) (#198)
Fixes nightroman/FarNet#71
>---------------------------------------------------------------
de6df5f720e1cdfe43f8f1e37d7f55563413fe0b
CHANGELOG.md | 1 +
base/hrc/misc/markdown.hrc | 69 ++++++++++++++++++++++----
tests/test/_valid/other/markdown.md.html | 83 ++++++++++++++++++++++++++++++++
tests/test/other/markdown.md | 82 +++++++++++++++++++++++++++++++
4 files changed, 226 insertions(+), 9 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index be1d98f..bd9517a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -55,6 +55,7 @@
- [verilog] add define, include, timescale support
- [cmake] fix escaping strings
- [cpp] functions outliner list cleanup
+- [markdown] improve HTML handling (inline tags and CommonMark blocks)
### Added
- New package type of base - all packed. Hrc and hrd files in one archive. Directory 'auto' not in archive.
diff --git a/base/hrc/misc/markdown.hrc b/base/hrc/misc/markdown.hrc
index 74efc00..c371bf1 100644
--- a/base/hrc/misc/markdown.hrc
+++ b/base/hrc/misc/markdown.hrc
@@ -7,7 +7,7 @@ xsi:schemaLocation="
http://colorer.sf.net/2003/hrc http://colorer.sf.net/2003/hr
<type name="markdown">
<annotation><documentation><![CDATA[
-markdown.hrc by Roman Kuzmin (nightroman), 2025-05-09
+markdown.hrc by Roman Kuzmin (nightroman), 2026-01-27
* Use markdown2 for extensions.
* Opened spans are always colored.
@@ -18,13 +18,15 @@ markdown.hrc by Roman Kuzmin (nightroman), 2025-05-09
Inline HTML
-* ALLCAPS tags are treated separately, not affecting markdown, see #6:
https://github.github.com/gfm/#html-block
-* Other HTML is treated as XML and should be well formed.
+* HTML highlighting applies to CommonMark HTML blocks
https://spec.commonmark.org/0.31.2/#html-blocks
+* Inline HTML tags are highlighted as tags only and do not disable markdown parsing inside.
Inline JavaScript
* <% %> marks Obsidian Templater blocks.
+Contributors:
+ Alexey Shelaev
]]></documentation></annotation>
<region name="Anchor" parent="def:LabelStrong" description="{#Anchor}"/>
@@ -86,6 +88,7 @@ Inline JavaScript
<entity name="Html" value="(?:ADDRESS|ARTICLE|ASIDE|BASE|BASEFONT|BLOCKQUOTE|BODY|CAPTION|CENTER|COL|COLGROUP|DD|DETAILS|DIALOG|DIR|DIV|DL|DT|FIELDSET|FIGCAPTION|FIGURE|FOOTER|FORM|FRAME|FRAMESET|H1|H2|H3|H4|H5|H6|HEAD|HEADER|HR|HTML|IFRAME|LEGEND|LI|LINK|MAIN|MENU|MENUITEM|NAV|NOFRAMES|OL|OPTGROUP|OPTION|P|PARAM|SECTION|SOURCE|SUMMARY|TABLE|TBODY|TD|TFOOT|TH|THEAD|TITLE|TR|TRACK|UL)"/>
<entity name="Top" value="^(?:\s*$|%Rule;|%Head;|%Ref;|%Abbr;)"/>
+<entity name="Blank" value="^\s*$"/>
<entity name="LEnd" value="^(?:%Top;|\s*%List2;|%Fence;|%i3;%Quote;)?="/>
<entity name="PEnd" value="^(?:%Top;| {,3}:\s+\S|%Fence;|%i3;%Quote;)?="/>
@@ -134,16 +137,57 @@ Inline JavaScript
<scheme name="Html">
<regexp match="/(?{LinkMark}<)(?{LinkText}%URI;|%Email;)(?{LinkMark}>)/"/>
+ <block scheme="def:Comment" region="def:Comment"
+ start="/(?{start}<!--)/" end="/(?{end}-->)/"
+ />
<block scheme="xml:Attribute"
- start="/(?{start}(?{xml:
element.start.lt}<)(?{xml:
element.start.name}%Html;)\b)/"
- end="/(?{end}(?{xml:
element.start.gt}>))/"
+ start="/(?{start}(?{xml:
element.start.lt}<)(?{xml:
element.start.name}%ID;)\b)/"
+ end="/(?{end}(?{xml:
element.start.gt}\/?>))/"
+ />
+
+ <regexp match="/(?{xml:
element.end.lt}<\/)(?{xml:
element.end.name}%ID;)(?{xml:
element.end.gt}>)/"/>
+
+</scheme>
+
+<scheme name="HtmlBlock">
+ <!-- HTML Block Type 1 (pre/script/style/textarea) -->
+ <block scheme="html:html"
+ start="/(?{start}%i3;(?{html:htmlTagBr}<(?{html:htmlOpenTag}(?{starttag}pre|script|style|textarea))(?:\s+[^<>]*?)?(?:>|$)))/i"
+ end="/(?{end}(?{html:htmlTagBr}<\/(?{html:htmlCloseTag}\y{starttag}\b\s*)>))/i"
/>
- <regexp match="/(?{xml:
element.end.lt}<\/)(?{xml:
element.end.name}%Html;)(?{xml:
element.end.gt}>)/"/>
+ <!-- HTML Block Type 2 (comment) -->
+ <!-- handled by Html scheme -->
+
+ <!-- HTML Block Type 3 (processing instruction) -->
+ <block scheme="html:htmlCoreParams"
+ start="/(?{start}%i3;(?{html:htmlTagBr}<\?%ID;*))/"
+ end="/(?{end}(?{html:htmlTagBr}\?>))/"
+ />
- <block scheme="xml:xml"
- start="/\M<(?:!--|\d?!\w+(?:\s|\/?>|$))/"
- end="//"
+ <!-- HTML Block Type 4 (declaration) -->
+ <block scheme="html:html"
+ start="/(?{start}%i3;<![A-Za-z])/i"
+ end="/(?{end}>)/"
+ region="html:htmlDirective"
+ />
+
+ <!-- HTML Block Type 5 (CDATA) -->
+ <block scheme="html:html"
+ start="/(?{start}%i3;(?{BlindMark}<!\[CDATA\[))/"
+ end="/(?{end}(?{BlindMark}\]\]>))/"
+ />
+
+ <!-- HTML Block Type 6 (block tags, blank line ends) -->
+ <block scheme="html:html"
+ start="/\M(?{start}%i3;<\/?%Html;(?:\s|\t|$|>|\/>))/i"
+ end="/(?{end}%Blank;)/"
+ />
+
+ <!-- HTML Block Type 7 (complete tag line, blank line ends) -->
+ <block scheme="html:html"
+ start="/\M(?{start}%i3;(?:<%ID;(?:\s+[^<>]*?)?\/?>|<\/%ID;\s*>)[ \t]*$)/i"
+ end="/(?{end}%Blank;)/"
/>
</scheme>
@@ -153,6 +197,7 @@ Inline JavaScript
<inherit scheme="CodeSpan"/>
<inherit scheme="LinkSpan"/>
<inherit scheme="Template"/>
+ <inherit scheme="HtmlBlock"/>
<inherit scheme="Html"/>
</scheme>
@@ -201,6 +246,7 @@ Inline JavaScript
</scheme>
<scheme name="Quote">
+ <inherit scheme="HtmlBlock"/>
<inherit scheme="Wrap"/>
<inherit scheme="Escape"/>
<inherit scheme="Template"/>
@@ -234,6 +280,7 @@ Inline JavaScript
</scheme>
<scheme name="Item3">
+ <inherit scheme="HtmlBlock"/>
<block scheme="Template" region="QuoteText"
start="/(?{start}%s12;%QuoteMark;)/" end="/(?{end})\M(?:%Top;|^\s+%List1;|%x4;{,3}%Fence;|%i11;%Quote;)/"/>
@@ -259,6 +306,7 @@ Inline JavaScript
</scheme>
<scheme name="Item2">
+ <inherit scheme="HtmlBlock"/>
<block scheme="Template" region="QuoteText"
start="/(?{start}%s8;%QuoteMark;)/" end="/(?{end})\M(?:%Top;|^\s+%List1;|%x4;{,2}%Fence;|%i7;%Quote;)/"/>
@@ -284,6 +332,7 @@ Inline JavaScript
</scheme>
<scheme name="Item">
+ <inherit scheme="HtmlBlock"/>
<block scheme="Template" region="QuoteText"
start="/(?{start}%s4;%QuoteMark;)/" end="/(?{end})\M(?:%Top;|^\s+%List1;|%x4;%Fence;|%i3;%Quote;)/"/>
@@ -311,6 +360,8 @@ Inline JavaScript
<scheme name="markdown">
<!--user extensions-->
<inherit scheme="markdown2:markdown2" />
+ <inherit scheme="HtmlBlock"/>
+
<regexp match="/^(?{Rule}%Rule;)/"/>
diff --git a/tests/test/_valid/other/markdown.md.html b/tests/test/_valid/other/markdown.md.html
new file mode 100644
index 0000000..c695de0
--- /dev/null
+++ b/tests/test/_valid/other/markdown.md.html
@@ -0,0 +1,83 @@
+ 0: Inline HTML should not bleed:
+ 1: <span class='xml-element-start-lt def-OpenTag def-Tag'><</span><span class='xml-element-start-name def-Tag'>sub</span><span class='xml-element-start-gt def-OpenTag def-Tag'>></span>lower with<span class='xml-element-start-lt def-OpenTag def-Tag'><</span><span class='xml-element-start-name def-Tag'>br</span><span class='xml-element-start-gt def-OpenTag def-Tag'>></span> breaks<span class='xml-element-end-lt def-CloseTag def-Tag'></</span><span class='xml-element-end-name def-Tag'>sub</span><span class='xml-element-end-gt def-CloseTag def-Tag'>></span> and <span class='xml-element-start-lt def-OpenTag def-Tag'><</span><span class='xml-element-start-name def-Tag'>custom-tag</span> <span class='xml-Attribute-name def-ParameterUnknown def-ParameterStrong def-Parameter'>attr</span><span class='xml-Attribute-eq def-Symbol'>=</span><span class='xml-AttValue-start def-StringEdge def-String'>"</span><span class='xml-AttValue def-String'>v</span><span class='xml-AttValue-end def-StringEdge def-String'>"</span><span class='xml-element-start-gt def-OpenTag def-Tag'>></span>inline with<span class='xml-element-start-lt def-OpenTag def-Tag'><</span><span class='xml-element-start-name def-Tag'>br</span><span class='xml-element-start-gt def-OpenTag def-Tag'>></span> breaks<span class='xml-element-end-lt def-CloseTag def-Tag'></</span><span class='xml-element-end-name def-Tag'>custom-tag</span><span class='xml-element-end-gt def-CloseTag def-Tag'>></span>
+ 2: <span class='markdown-EmText def-Label'>_and break highlighting_</span>.
+ 3:
+ 4: Inline <span class='xml-element-start-lt def-OpenTag def-Tag'><</span><span class='xml-element-start-name def-Tag'>div</span> <span class='xml-Attribute-name def-ParameterUnknown def-ParameterStrong def-Parameter'>style</span><span class='xml-Attribute-eq def-Symbol'>=</span><span class='xml-AttValue-start def-StringEdge def-String'>"</span><span class='xml-AttValue def-String'>></span><span class='xml-AttValue-end def-StringEdge def-String'>"</span> <span class='xml-element-start-gt def-OpenTag def-Tag'>/></span>
+ 5:
+ 6: <span class='def-Comment def-Syntax'><!--some comment--></span>
+ 7:
+ 8: Inline <span class='def-Comment def-Syntax'><!--some XML comment--></span> followed by a self-closing tag <span class='xml-element-start-lt def-OpenTag def-Tag'><</span><span class='xml-element-start-name def-Tag'>hr</span> <span class='xml-element-start-gt def-OpenTag def-Tag'>/></span>
+ 9:
+10: HTML block type 1 (pre/script/style/textarea):
+11: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>pre</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+12: *This*
+13: **is**
+14: `not`
+15: _markdown_
+16: <span class='html-htmlDirective def-Directive'><!DOCTYPE html></span>
+17: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>html</span><span class='html-htmlUnknowParam def-ParameterUnknown def-ParameterStrong def-Parameter'> </span><span class='html-htmlParam def-Parameter'>lang</span><span class='html-htmlTagEqu def-Symbol'>=</span><span class='html-htmlString def-String'>"en"</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+18: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>body</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+19: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>p</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>This is <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>br</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span> HTML<span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>p</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+20: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>body</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+21: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>html</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+22: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>pre</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+23:
+24: HTML block type 2 (comment):
+25: <span class='def-Comment def-Syntax'><!--</span>
+26: <span class='def-Comment def-Syntax'>*not markdown*</span>
+27: <span class='def-Comment def-Syntax'>--></span>
+28:
+29: HTML block type 3 (processing instruction):
+30: <span class='html-htmlTagBr def-OpenTag def-Tag'><?pi</span>
+31: *not markdown*
+32: <span class='html-htmlTagBr def-OpenTag def-Tag'>?></span>
+33:
+34: <span class='html-htmlTagBr def-OpenTag def-Tag'><?xml</span> <span class='html-htmlParam def-Parameter'>version</span><span class='html-htmlTagEqu def-Symbol'>=</span><span class='html-htmlString def-String'>"1.0"</span><span class='html-htmlTagBr def-OpenTag def-Tag'>?></span>
+35: <span class='html-htmlTagBr def-OpenTag def-Tag'><?xml-stylesheet</span> <span class='html-htmlParam def-Parameter'>href</span><span class='html-htmlTagEqu def-Symbol'>=</span><span class='html-htmlString def-String'>"style.css"</span> <span class='html-htmlParam def-Parameter'>type</span><span class='html-htmlTagEqu def-Symbol'>=</span><span class='html-htmlString def-String'>"text/css"</span><span class='html-htmlTagBr def-OpenTag def-Tag'>?></span>
+36:
+37: HTML block type 4 (declaration):
+38: <span class='html-htmlDirective def-Directive'><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML </span><span class='html-htmlNumb def-Number'>4.01</span><span class='html-htmlDirective def-Directive'> Frameset//EN"</span>
+39: <span class='html-htmlDirective def-Directive'> "
http://www</span><span class='html-htmlNumb def-Number'>.</span><span class='html-htmlDirective def-Directive'>w3</span><span class='html-htmlNumb def-Number'>.</span><span class='html-htmlDirective def-Directive'>org/TR/html4/frameset</span><span class='html-htmlNumb def-Number'>.</span><span class='html-htmlDirective def-Directive'>dtd"></span>
+40:
+41: HTML block type 5 (CDATA):
+42: <span class='markdown-BlindMark def-Tag'><![CDATA[</span>
+43: *not markdown*
+44: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlUnknowTag def-Tag'>data</span><span class='html-htmlUnknowParam def-ParameterUnknown def-ParameterStrong def-Parameter'> attr</span><span class='html-htmlTagEqu def-Symbol'>=</span><span class='html-htmlString def-String'>'v'</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span><span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlUnknowTag def-Tag'>data</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+45: <span class='markdown-BlindMark def-Tag'>]]></span>
+46:
+47: HTML block type 6 (block tags, blank line ends):
+48: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>div</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+49: *not markdown*
+50: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>div</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+51:
+52: Additional block tag samples (type 6):
+53: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>table</span><span class='html-htmlUnknowParam def-ParameterUnknown def-ParameterStrong def-Parameter'> </span><span class='html-htmlParam def-Parameter'>style</span><span class='html-htmlTagEqu def-Symbol'>=</span><span class='html-htmlString def-String'>"</span><span class='html-htmlUnknowParam def-ParameterUnknown def-ParameterStrong def-Parameter'>CSS</span><span class='html-htmlString def-String'>"</span><span class='html-htmlUnknowParam def-ParameterUnknown def-ParameterStrong def-Parameter'> </span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+54: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>tr</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span><span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>td</span><span class='html-htmlUnknowParam def-ParameterUnknown def-ParameterStrong def-Parameter'> attr</span><span class='html-htmlTagEqu def-Symbol'>=</span><span class='html-htmlString def-String'>"v"</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>`not markdown`<span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>td</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span><span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>tr</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+55: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>table</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+56:
+57: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>section</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+58: *not markdown*
+59: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>section</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+60: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlUnknowTag def-Tag'>SEARCH</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+61: *not markdown*
+62: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlUnknowTag def-Tag'>SEARCH</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+63:
+64: HTML block type 7 (complete tag line, blank line ends):
+65: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlUnknowTag def-Tag'>custom-tag</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+66: *not markdown*
+67: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlUnknowTag def-Tag'>custom-tag</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+68:
+69: Additional complete-tag samples (type 7):
+70: <span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlUnknowTag def-Tag'>ns:x-tag</span><span class='html-htmlUnknowParam def-ParameterUnknown def-ParameterStrong def-Parameter'> </span><span class='html-htmlParam def-Parameter'>data</span><span class='html-htmlUnknowParam def-ParameterUnknown def-ParameterStrong def-Parameter'>-x</span><span class='html-htmlTagEqu def-Symbol'>=</span><span class='html-htmlString def-String'>"1"</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+71: *not markdown*
+72: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlUnknowTag def-Tag'>ns:x-tag</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+73:
+74: In list:
+75:
+76: <span class='markdown-ListMark markdown-ShownMark def-Keyword'>-</span> <span class='markdown-ListText def-Number'>before</span>
+77: <span class='markdown-ListText def-Number'> </span><span class='html-htmlTagBr def-OpenTag def-Tag'><</span><span class='html-htmlOpenTag def-Keyword'>pre</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span><span class='markdown-ListText def-Number'></span>
+78: `not highlighted` _neither_ *nor this*
+79: <span class='html-htmlTagBr def-OpenTag def-Tag'></</span><span class='html-htmlCloseTag html-htmlOpenTag def-Keyword'>pre</span><span class='html-htmlTagBr def-OpenTag def-Tag'>></span>
+80: <span class='markdown-ListMark markdown-ShownMark def-Keyword'>-</span> <span class='markdown-ListText def-Number'>after</span>
+81: <span class='markdown-ListText def-Number'> and here </span><span class='markdown-Code def-TypeKeyword def-Keyword'>`code span`</span><span class='markdown-ListText def-Number'> </span><span class='markdown-EmText def-Label'>_emphasis_</span><span class='markdown-ListText def-Number'> </span><span class='markdown-StrongText def-StringEdge def-String'>**strong**</span><span class='markdown-ListText def-Number'></span>
+82:
diff --git a/tests/test/other/markdown.md b/tests/test/other/markdown.md
new file mode 100644
index 0000000..99db318
--- /dev/null
+++ b/tests/test/other/markdown.md
@@ -0,0 +1,82 @@
+Inline HTML should not bleed:
+<sub>lower with<br> breaks</sub> and <custom-tag attr="v">inline with<br> breaks</custom-tag>
+_and break highlighting_.
+
+Inline <div style=">" />
+
+<!--some comment-->
+
+Inline <!--some XML comment--> followed by a self-closing tag <hr />
+
+HTML block type 1 (pre/script/style/textarea):
+<pre>
+ *This*
+ **is**
+ `not`
+ _markdown_
+<!DOCTYPE html>
+<html lang="en">
+<body>
+ <p>This is <br> HTML</p>
+</body>
+</html>
+</pre>
+
+HTML block type 2 (comment):
+<!--
+*not markdown*
+-->
+
+HTML block type 3 (processing instruction):
+<?pi
+*not markdown*
+?>
+
+<?xml version="1.0"?>
+<?xml-stylesheet href="style.css" type="text/css"?>
+
+HTML block type 4 (declaration):
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
+ "
http://www.w3.org/TR/html4/frameset.dtd">
+
+HTML block type 5 (CDATA):
+<![CDATA[
+*not markdown*
+<data attr='v'></data>
+]]>
+
+HTML block type 6 (block tags, blank line ends):
+<div>
+*not markdown*
+</div>
+
+Additional block tag samples (type 6):
+<table style="CSS" >
+<tr><td attr="v">`not markdown`</td></tr>
+</table>
+
+<section>
+*not markdown*
+</section>
+<SEARCH>
+*not markdown*
+</SEARCH>
+
+HTML block type 7 (complete tag line, blank line ends):
+<custom-tag>
+*not markdown*
+</custom-tag>
+
+Additional complete-tag samples (type 7):
+<ns:x-tag data-x="1">
+*not markdown*
+</ns:x-tag>
+
+In list:
+
+- before
+ <pre>
+ `not highlighted` _neither_ *nor this*
+ </pre>
+- after
+ and here `code span` _emphasis_ **strong**