88
99" Read the HTML syntax to start with
1010if v: version < 600
11- so <sfile> :p :h /html.vim
11+ source <sfile> :p :h /html.vim
1212else
1313 runtime ! syntax /html.vim
1414
@@ -25,14 +25,14 @@ endif
2525
2626" don't use standard HiLink, it will not work with included syntax files
2727if v: version < 508
28- command ! -nargs =+ HtmlHiLink hi link <args>
28+ command ! -nargs =+ HtmlHiLink highlight link <args>
2929else
30- command ! -nargs =+ HtmlHiLink hi def link <args>
30+ command ! -nargs =+ HtmlHiLink highlight default link <args>
3131endif
3232
33- syn spell toplevel
34- syn case ignore
35- syn sync linebreaks =1
33+ syntax spell toplevel
34+ syntax case ignore
35+ syntax sync linebreaks =1
3636
3737let s: conceal = ' '
3838let s: concealends = ' '
@@ -51,113 +51,113 @@ if get(g:, 'vim_markdown_emphasis_multiline', 1)
5151else
5252 let s: oneline = ' oneline'
5353endif
54- syn region mkdItalic matchgroup =mkdItalic start =" \% (\*\| _\) " end =" \% (\*\| _\) "
55- syn region mkdBold matchgroup =mkdBold start =" \% (\*\*\| __\) " end =" \% (\*\*\| __\) "
56- syn region mkdBoldItalic matchgroup =mkdBoldItalic start =" \% (\*\*\*\| ___\) " end =" \% (\*\*\*\| ___\) "
57- execute ' syn region htmlItalic matchgroup=mkdItalic start="\%(^\|\s\)\zs\*\ze[^\\\*\t ]\%(\%([^*]\|\\\*\|\n\)*[^\\\*\t ]\)\?\*\_W" end="[^\\\*\t ]\zs\*\ze\_W" keepend contains=@Spell' . s: oneline . s: concealends
58- execute ' syn region htmlItalic matchgroup=mkdItalic start="\%(^\|\s\)\zs_\ze[^\\_\t ]" end="[^\\_\t ]\zs_\ze\_W" keepend contains=@Spell' . s: oneline . s: concealends
59- execute ' syn region htmlBold matchgroup=mkdBold start="\%(^\|\s\)\zs\*\*\ze\S" end="\S\zs\*\*" keepend contains=@Spell' . s: oneline . s: concealends
60- execute ' syn region htmlBold matchgroup=mkdBold start="\%(^\|\s\)\zs__\ze\S" end="\S\zs__" keepend contains=@Spell' . s: oneline . s: concealends
61- execute ' syn region htmlBoldItalic matchgroup=mkdBoldItalic start="\%(^\|\s\)\zs\*\*\*\ze\S" end="\S\zs\*\*\*" keepend contains=@Spell' . s: oneline . s: concealends
62- execute ' syn region htmlBoldItalic matchgroup=mkdBoldItalic start="\%(^\|\s\)\zs___\ze\S" end="\S\zs___" keepend contains=@Spell' . s: oneline . s: concealends
54+ syntax region mkdItalic matchgroup =mkdItalic start =" \% (\*\| _\) " end =" \% (\*\| _\) "
55+ syntax region mkdBold matchgroup =mkdBold start =" \% (\*\*\| __\) " end =" \% (\*\*\| __\) "
56+ syntax region mkdBoldItalic matchgroup =mkdBoldItalic start =" \% (\*\*\*\| ___\) " end =" \% (\*\*\*\| ___\) "
57+ execute ' syntax region htmlItalic matchgroup=mkdItalic start="\%(^\|\s\)\zs\*\ze[^\\\*\t ]\%(\%([^*]\|\\\*\|\n\)*[^\\\*\t ]\)\?\*\_W" end="[^\\\*\t ]\zs\*\ze\_W" keepend contains=@Spell' . s: oneline . s: concealends
58+ execute ' syntax region htmlItalic matchgroup=mkdItalic start="\%(^\|\s\)\zs_\ze[^\\_\t ]" end="[^\\_\t ]\zs_\ze\_W" keepend contains=@Spell' . s: oneline . s: concealends
59+ execute ' syntax region htmlBold matchgroup=mkdBold start="\%(^\|\s\)\zs\*\*\ze\S" end="\S\zs\*\*" keepend contains=@Spell' . s: oneline . s: concealends
60+ execute ' syntax region htmlBold matchgroup=mkdBold start="\%(^\|\s\)\zs__\ze\S" end="\S\zs__" keepend contains=@Spell' . s: oneline . s: concealends
61+ execute ' syntax region htmlBoldItalic matchgroup=mkdBoldItalic start="\%(^\|\s\)\zs\*\*\*\ze\S" end="\S\zs\*\*\*" keepend contains=@Spell' . s: oneline . s: concealends
62+ execute ' syntax region htmlBoldItalic matchgroup=mkdBoldItalic start="\%(^\|\s\)\zs___\ze\S" end="\S\zs___" keepend contains=@Spell' . s: oneline . s: concealends
6363
6464" [link](URL) | [link][id] | [link][] | 
65- syn region mkdFootnotes matchgroup =mkdDelimiter start =" \[ ^" end =" \] "
66- execute ' syn region mkdID matchgroup=mkdDelimiter start="\[" end="\]" contained oneline' . s: conceal
67- execute ' syn region mkdURL matchgroup=mkdDelimiter start="(" end=")" contained oneline' . s: conceal
68- execute ' syn region mkdLink matchgroup=mkdDelimiter start="\\\@<!!\?\[\ze[^]\n]*\n\?[^]\n]*\][[(]" end="\]" contains=@mkdNonListItem,@Spell nextgroup=mkdURL,mkdID skipwhite' . s: concealends
65+ syntax region mkdFootnotes matchgroup =mkdDelimiter start =" \[ ^" end =" \] "
66+ execute ' syntax region mkdID matchgroup=mkdDelimiter start="\[" end="\]" contained oneline' . s: conceal
67+ execute ' syntax region mkdURL matchgroup=mkdDelimiter start="(" end=")" contained oneline' . s: conceal
68+ execute ' syntax region mkdLink matchgroup=mkdDelimiter start="\\\@<!!\?\[\ze[^]\n]*\n\?[^]\n]*\][[(]" end="\]" contains=@mkdNonListItem,@Spell nextgroup=mkdURL,mkdID skipwhite' . s: concealends
6969
7070" Autolink without angle brackets.
7171" mkd inline links: protocol optional user:pass@ sub/domain .com, .co.uk, etc optional port path/querystring/hash fragment
7272" ------------ _____________________ ----------------------------- _________________________ ----------------- __
73- syn match mkdInlineURL / https\? :\/\/\(\w\+\( :\w\+\)\? @\)\?\( [A-Za-z0-9][-_0-9A-Za-z]*\.\)\{ 1,}\(\w\{ 2,}\.\?\)\{ 1,}\( :[0-9]\{ 1,5}\)\? [^] \t ]*/
73+ syntax match mkdInlineURL / https\? :\/\/\(\w\+\( :\w\+\)\? @\)\?\( [A-Za-z0-9][-_0-9A-Za-z]*\.\)\{ 1,}\(\w\{ 2,}\.\?\)\{ 1,}\( :[0-9]\{ 1,5}\)\? [^] \t ]*/
7474
7575" Autolink with parenthesis.
76- syn region mkdInlineURL matchgroup =mkdDelimiter start =" (\( https\? :\/\/\(\w\+\( :\w\+\)\? @\)\?\( [A-Za-z0-9][-_0-9A-Za-z]*\.\)\{ 1,}\(\w\{ 2,}\.\?\)\{ 1,}\( :[0-9]\{ 1,5}\)\? [^] \t ]*)\)\@ =" end =" )"
76+ syntax region mkdInlineURL matchgroup =mkdDelimiter start =" (\( https\? :\/\/\(\w\+\( :\w\+\)\? @\)\?\( [A-Za-z0-9][-_0-9A-Za-z]*\.\)\{ 1,}\(\w\{ 2,}\.\?\)\{ 1,}\( :[0-9]\{ 1,5}\)\? [^] \t ]*)\)\@ =" end =" )"
7777
7878" Autolink with angle brackets.
79- syn region mkdInlineURL matchgroup =mkdDelimiter start =" \\\@ <!<\z e[a-z][a-z0-9,.-]\{ 1,22}:\/\/ [^> ]*>" end =" >"
79+ syntax region mkdInlineURL matchgroup =mkdDelimiter start =" \\\@ <!<\z e[a-z][a-z0-9,.-]\{ 1,22}:\/\/ [^> ]*>" end =" >"
8080
8181" Link definitions: [id]: URL (Optional Title)
82- syn region mkdLinkDef matchgroup =mkdDelimiter start =" ^ \{ ,3}\z s\[\^\@ !" end =" ]:" oneline nextgroup =mkdLinkDefTarget skipwhite
83- syn region mkdLinkDefTarget start =" <\?\z s\S " excludenl end =" \z e[>[:space:]\n ]" contained nextgroup =mkdLinkTitle,mkdLinkDef skipwhite skipnl oneline
84- syn region mkdLinkTitle matchgroup =mkdDelimiter start =+ "+ end =+ "+ contained
85- syn region mkdLinkTitle matchgroup =mkdDelimiter start =+ '+ end =+ '+ contained
86- syn region mkdLinkTitle matchgroup =mkdDelimiter start =+ (+ end =+ )+ contained
82+ syntax region mkdLinkDef matchgroup =mkdDelimiter start =" ^ \{ ,3}\z s\[\^\@ !" end =" ]:" oneline nextgroup =mkdLinkDefTarget skipwhite
83+ syntax region mkdLinkDefTarget start =" <\?\z s\S " excludenl end =" \z e[>[:space:]\n ]" contained nextgroup =mkdLinkTitle,mkdLinkDef skipwhite skipnl oneline
84+ syntax region mkdLinkTitle matchgroup =mkdDelimiter start =+ "+ end =+ "+ contained
85+ syntax region mkdLinkTitle matchgroup =mkdDelimiter start =+ '+ end =+ '+ contained
86+ syntax region mkdLinkTitle matchgroup =mkdDelimiter start =+ (+ end =+ )+ contained
8787
8888" HTML headings
89- syn region htmlH1 matchgroup =mkdHeading start =" ^\s *#" end =" $" contains =@mkdHeadingContent,@Spell
90- syn region htmlH2 matchgroup =mkdHeading start =" ^\s *##" end =" $" contains =@mkdHeadingContent,@Spell
91- syn region htmlH3 matchgroup =mkdHeading start =" ^\s *###" end =" $" contains =@mkdHeadingContent,@Spell
92- syn region htmlH4 matchgroup =mkdHeading start =" ^\s *####" end =" $" contains =@mkdHeadingContent,@Spell
93- syn region htmlH5 matchgroup =mkdHeading start =" ^\s *#####" end =" $" contains =@mkdHeadingContent,@Spell
94- syn region htmlH6 matchgroup =mkdHeading start =" ^\s *######" end =" $" contains =@mkdHeadingContent,@Spell
95- syn match htmlH1 / ^.\+\n =\+ $/ contains =@mkdHeadingContent,@Spell
96- syn match htmlH2 / ^.\+\n -\+ $/ contains =@mkdHeadingContent,@Spell
89+ syntax region htmlH1 matchgroup =mkdHeading start =" ^\s *#" end =" $" contains =@mkdHeadingContent,@Spell
90+ syntax region htmlH2 matchgroup =mkdHeading start =" ^\s *##" end =" $" contains =@mkdHeadingContent,@Spell
91+ syntax region htmlH3 matchgroup =mkdHeading start =" ^\s *###" end =" $" contains =@mkdHeadingContent,@Spell
92+ syntax region htmlH4 matchgroup =mkdHeading start =" ^\s *####" end =" $" contains =@mkdHeadingContent,@Spell
93+ syntax region htmlH5 matchgroup =mkdHeading start =" ^\s *#####" end =" $" contains =@mkdHeadingContent,@Spell
94+ syntax region htmlH6 matchgroup =mkdHeading start =" ^\s *######" end =" $" contains =@mkdHeadingContent,@Spell
95+ syntax match htmlH1 / ^.\+\n =\+ $/ contains =@mkdHeadingContent,@Spell
96+ syntax match htmlH2 / ^.\+\n -\+ $/ contains =@mkdHeadingContent,@Spell
9797
9898" define Markdown groups
99- syn match mkdLineBreak / \+ $/
100- syn region mkdBlockquote start =/ ^\s *>/ end =/ $/ contains =mkdLink,mkdInlineURL,mkdLineBreak,@Spell
101- execute ' syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/`/' . s: concealcode
102- execute ' syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!``/ skip=/[^`]`[^`]/ end=/``/' . s: concealcode
103- execute ' syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(`\{3,}\)[^`]*$/ end=/^\s*\z1`*\s*$/' . s: concealcode
104- execute ' syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!\~\~/ end=/\(\([^\\]\|^\)\\\)\@<!\~\~/' . s: concealcode
105- execute ' syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*\z1\~*\s*$/' . s: concealcode
106- execute ' syn region mkdCode matchgroup=mkdCodeDelimiter start="<pre\(\|\_s[^>]*\)\\\@<!>" end="</pre>"' . s: concealcode
107- execute ' syn region mkdCode matchgroup=mkdCodeDelimiter start="<code\(\|\_s[^>]*\)\\\@<!>" end="</code>"' . s: concealcode
108- syn region mkdFootnote start =" \[ ^" end =" \] "
109- syn match mkdCode / ^\s *\n\(\(\s\{ 8,}[^ ]\|\t\t\+ [^\t ]\) .*\n\)\+ /
110- syn match mkdCode / \% ^\(\(\s\{ 4,}[^ ]\|\t\+ [^\t ]\) .*\n\)\+ /
111- syn match mkdCode / ^\s *\n\(\(\s\{ 4,}[^ ]\|\t\+ [^\t ]\) .*\n\)\+ / contained
112- syn match mkdListItem / ^\s *\% ([-*+]\|\d\+\.\)\z e\s\+ / contained nextgroup =mkdListItemCheckbox
113- syn match mkdListItemCheckbox / \[ [xXoO ]\]\z e\s\+ / contained contains =mkdListItem
114- syn region mkdListItemLine start =" ^\s *\% ([-*+]\|\d\+\.\)\s\+ " end =" $" oneline contains =@mkdNonListItem,mkdListItem,mkdListItemCheckbox,@Spell
115- syn region mkdNonListItemBlock start =" \(\% ^\(\s *\( [-*+]\|\d\+\.\)\s\+\)\@ !\|\n\(\_ ^\_ $\|\s\{ 4,}[^ ]\|\t +[^\t ]\)\@ !\) " end =" ^\(\s *\( [-*+]\|\d\+\.\)\s\+\)\@ =" contains =@mkdNonListItem,@Spell
116- syn match mkdRule / ^\s *\*\s\{ 0,1}\*\s\{ 0,1}\*\(\*\|\s\) *$/
117- syn match mkdRule / ^\s *-\s\{ 0,1}-\s\{ 0,1}-\( -\|\s\) *$/
118- syn match mkdRule / ^\s *_\s\{ 0,1}_\s\{ 0,1}_\( _\|\s\) *$/
99+ syntax match mkdLineBreak / \+ $/
100+ syntax region mkdBlockquote start =/ ^\s *>/ end =/ $/ contains =mkdLink,mkdInlineURL,mkdLineBreak,@Spell
101+ execute ' syntax region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/`/' . s: concealcode
102+ execute ' syntax region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!``/ skip=/[^`]`[^`]/ end=/``/' . s: concealcode
103+ execute ' syntax region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(`\{3,}\)[^`]*$/ end=/^\s*\z1`*\s*$/' . s: concealcode
104+ execute ' syntax region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!\~\~/ end=/\(\([^\\]\|^\)\\\)\@<!\~\~/' . s: concealcode
105+ execute ' syntax region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*\z1\~*\s*$/' . s: concealcode
106+ execute ' syntax region mkdCode matchgroup=mkdCodeDelimiter start="<pre\(\|\_s[^>]*\)\\\@<!>" end="</pre>"' . s: concealcode
107+ execute ' syntax region mkdCode matchgroup=mkdCodeDelimiter start="<code\(\|\_s[^>]*\)\\\@<!>" end="</code>"' . s: concealcode
108+ syntax region mkdFootnote start =" \[ ^" end =" \] "
109+ syntax match mkdCode / ^\s *\n\(\(\s\{ 8,}[^ ]\|\t\t\+ [^\t ]\) .*\n\)\+ /
110+ syntax match mkdCode / \% ^\(\(\s\{ 4,}[^ ]\|\t\+ [^\t ]\) .*\n\)\+ /
111+ syntax match mkdCode / ^\s *\n\(\(\s\{ 4,}[^ ]\|\t\+ [^\t ]\) .*\n\)\+ / contained
112+ syntax match mkdListItem / ^\s *\% ([-*+]\|\d\+\.\)\z e\s\+ / contained nextgroup =mkdListItemCheckbox
113+ syntax match mkdListItemCheckbox / \[ [xXoO ]\]\z e\s\+ / contained contains =mkdListItem
114+ syntax region mkdListItemLine start =" ^\s *\% ([-*+]\|\d\+\.\)\s\+ " end =" $" oneline contains =@mkdNonListItem,mkdListItem,mkdListItemCheckbox,@Spell
115+ syntax region mkdNonListItemBlock start =" \(\% ^\(\s *\( [-*+]\|\d\+\.\)\s\+\)\@ !\|\n\(\_ ^\_ $\|\s\{ 4,}[^ ]\|\t +[^\t ]\)\@ !\) " end =" ^\(\s *\( [-*+]\|\d\+\.\)\s\+\)\@ =" contains =@mkdNonListItem,@Spell
116+ syntax match mkdRule / ^\s *\*\s\{ 0,1}\*\s\{ 0,1}\*\(\*\|\s\) *$/
117+ syntax match mkdRule / ^\s *-\s\{ 0,1}-\s\{ 0,1}-\( -\|\s\) *$/
118+ syntax match mkdRule / ^\s *_\s\{ 0,1}_\s\{ 0,1}_\( _\|\s\) *$/
119119
120120" YAML frontmatter
121121if get (g: , ' vim_markdown_frontmatter' , 0 )
122- syn include @yamlTop syntax/yaml.vim
123- syn region Comment matchgroup =mkdDelimiter start =" \% ^---$" end =" ^\( ---\|\.\.\.\) $" contains =@yamlTop keepend
122+ syntax include @yamlTop syntax/yaml.vim
123+ syntax region Comment matchgroup =mkdDelimiter start =" \% ^---$" end =" ^\( ---\|\.\.\.\) $" contains =@yamlTop keepend
124124 unlet ! b: current_syntax
125125endif
126126
127127if get (g: , ' vim_markdown_toml_frontmatter' , 0 )
128128 try
129- syn include @tomlTop syntax/toml.vim
130- syn region Comment matchgroup =mkdDelimiter start =" \% ^+++$" end =" ^+++$" transparent contains =@tomlTop keepend
129+ syntax include @tomlTop syntax/toml.vim
130+ syntax region Comment matchgroup =mkdDelimiter start =" \% ^+++$" end =" ^+++$" transparent contains =@tomlTop keepend
131131 unlet ! b: current_syntax
132132 catch /E484/
133- syn region Comment matchgroup =mkdDelimiter start =" \% ^+++$" end =" ^+++$"
133+ syntax region Comment matchgroup =mkdDelimiter start =" \% ^+++$" end =" ^+++$"
134134 endtry
135135endif
136136
137137if get (g: , ' vim_markdown_json_frontmatter' , 0 )
138138 try
139- syn include @jsonTop syntax/json.vim
140- syn region Comment matchgroup =mkdDelimiter start =" \% ^{$" end =" ^}$" contains =@jsonTop keepend
139+ syntax include @jsonTop syntax/json.vim
140+ syntax region Comment matchgroup =mkdDelimiter start =" \% ^{$" end =" ^}$" contains =@jsonTop keepend
141141 unlet ! b: current_syntax
142142 catch /E484/
143- syn region Comment matchgroup =mkdDelimiter start =" \% ^{$" end =" ^}$"
143+ syntax region Comment matchgroup =mkdDelimiter start =" \% ^{$" end =" ^}$"
144144 endtry
145145endif
146146
147147if get (g: , ' vim_markdown_math' , 0 )
148- syn include @tex syntax/tex.vim
149- syn region mkdMath start =" \\\@ <!\$ " end =" \$ " skip =" \\\$ " contains =@tex keepend
150- syn region mkdMath start =" \\\@ <!\$\$ " end =" \$\$ " skip =" \\\$ " contains =@tex keepend
148+ syntax include @tex syntax/tex.vim
149+ syntax region mkdMath start =" \\\@ <!\$ " end =" \$ " skip =" \\\$ " contains =@tex keepend
150+ syntax region mkdMath start =" \\\@ <!\$\$ " end =" \$\$ " skip =" \\\$ " contains =@tex keepend
151151endif
152152
153153" Strike through
154154if get (g: , ' vim_markdown_strikethrough' , 0 )
155- execute ' syn region mkdStrike matchgroup=htmlStrike start="\%(\~\~\)" end="\%(\~\~\)"' . s: concealends
155+ execute ' syntax region mkdStrike matchgroup=htmlStrike start="\%(\~\~\)" end="\%(\~\~\)"' . s: concealends
156156 HtmlHiLink mkdStrike htmlStrike
157157endif
158158
159- syn cluster mkdHeadingContent contains =htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdLink,mkdInlineURL,mkdStrike,mkdCode
160- syn cluster mkdNonListItem contains =@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath,mkdStrike
159+ syntax cluster mkdHeadingContent contains =htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdLink,mkdInlineURL,mkdStrike,mkdCode
160+ syntax cluster mkdNonListItem contains =@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath,mkdStrike
161161
162162" highlighting for Markdown groups
163163HtmlHiLink mkdString String
0 commit comments