"additions to HTML groups
syn region htmlItalic start="\\\@<!\*\S\@=" end="\S\@<=\\\@<!\*" keepend oneline
-syn region htmlItalic start="\(^\|\s\)\@<=_\|\\\@<!_\([^_]\+\s\)\@=" end="\S\@<=_\|_\S\@=" keepend oneline
+syn region htmlItalic start="\(^\|\s\)\@<=_\|\\\@<!_\([^_]\+\s\)\@=" end="\S\@<=[^\\]_\|[^\\]_\S\@=" keepend oneline
syn region htmlBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend oneline
syn region htmlBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend oneline
syn region htmlBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend oneline
syn region mkdBlockquote start=/^\s*>/ end=/$/ contains=mkdLineBreak,mkdLineContinue,@Spell
syn region mkdCode start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/\(\([^\\]\|^\)\\\)\@<!`/
syn region mkdCode start=/\s*``[^`]*/ end=/[^`]*``\s*/
-syn region mkdCode start=/^\s*```\s*[0-9A-Za-z_-]*\s*$/ end=/^\s*```\s*$/
+syn region mkdCode start=/^\s*```\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*```\s*$/
syn region mkdCode start=/\s*\~\~[^\~]*/ end=/[^\~]*\~\~\s*/
-syn region mkdCode start=/^\s*\~\~\~\s*[0-9A-Za-z_-]*\s*$/ end=/^\s*\~\~\~\s*$/
+syn region mkdCode start=/^\s*\~\~\~\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*\~\~\~\s*$/
syn region mkdCode start="<pre[^>]*>" end="</pre>"
syn region mkdCode start="<code[^>]*>" end="</code>"
syn region mkdFootnote start="\[^" end="\]"
syn match mkdRule /^\s*\*\{3,5}$/
"HTML headings
-syn region htmlH1 start="^\s*#" end="\($\|#\+\)" contains=@Spell
-syn region htmlH2 start="^\s*##" end="\($\|#\+\)" contains=@Spell
-syn region htmlH3 start="^\s*###" end="\($\|#\+\)" contains=@Spell
-syn region htmlH4 start="^\s*####" end="\($\|#\+\)" contains=@Spell
-syn region htmlH5 start="^\s*#####" end="\($\|#\+\)" contains=@Spell
-syn region htmlH6 start="^\s*######" end="\($\|#\+\)" contains=@Spell
+syn region htmlH1 start="^\s*#" end="$" contains=@Spell
+syn region htmlH2 start="^\s*##" end="$" contains=@Spell
+syn region htmlH3 start="^\s*###" end="$" contains=@Spell
+syn region htmlH4 start="^\s*####" end="$" contains=@Spell
+syn region htmlH5 start="^\s*#####" end="$" contains=@Spell
+syn region htmlH6 start="^\s*######" end="$" contains=@Spell
syn match htmlH1 /^.\+\n=\+$/ contains=@Spell
syn match htmlH2 /^.\+\n-\+$/ contains=@Spell
-if get(g:, 'vim_markdown_math', 0)
- syn region mkdMath matchgroup=mkdDelimiter start="\\\@<!\$" end="\$"
- syn region mkdMath matchgroup=mkdDelimiter start="\\\@<!\$\$" end="\$\$"
-endif
-
" YAML frontmatter
if get(g:, 'vim_markdown_frontmatter', 0)
syn include @yamlTop syntax/yaml.vim
syn region Comment matchgroup=mkdDelimiter start="\%^---$" end="^---$" contains=@yamlTop
endif
+if get(g:, 'vim_markdown_math', 0)
+ syn include @tex syntax/tex.vim
+ syn region mkdMath matchgroup=mkdDelimiter start="\\\@<!\$" end="\$" contains=@tex
+ syn region mkdMath matchgroup=mkdDelimiter start="\\\@<!\$\$" end="\$\$" contains=@tex
+endif
+
syn cluster mkdNonListItem contains=htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdIndentCode,mkdListItem,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath
"highlighting for Markdown groups
HtmlHiLink mkdLinkDef mkdID
HtmlHiLink mkdLinkDefTarget mkdURL
HtmlHiLink mkdLinkTitle htmlString
-HtmlHiLink mkdMath Statement
HtmlHiLink mkdDelimiter Delimiter
let b:current_syntax = "mkd"