syn match mkdListItem /^\s*\%([-*+]\|\d\+\.\)\ze\s\+/ contained
syn region mkdListItemLine start="^\s*\%([-*+]\|\d\+\.\)\s\+" end="$" oneline contains=@mkdNonListItem,mkdListItem,@Spell
syn region mkdNonListItemBlock start="\(\%^\(\s*\([-*+]\|\d\+\.\)\s\+\)\@!\|\n\(\_^\_$\|\s\{4,}[^ ]\|\t+[^\t]\)\@!\)" end="^\(\s*\([-*+]\|\d\+\.\)\s\+\)\@=" contains=@mkdNonListItem,@Spell
-syn match mkdRule /^\s*\*\s\{0,1}\*\s\{0,1}\*$/
-syn match mkdRule /^\s*-\s\{0,1}-\s\{0,1}-$/
-syn match mkdRule /^\s*_\s\{0,1}_\s\{0,1}_$/
-syn match mkdRule /^\s*-\{3,}$/
-syn match mkdRule /^\s*\*\{3,5}$/
+syn match mkdRule /^\s*\*\s\{0,1}\*\s\{0,1}\*\(\*\|\s\)*$/
+syn match mkdRule /^\s*-\s\{0,1}-\s\{0,1}-\(-\|\s\)*$/
+syn match mkdRule /^\s*_\s\{0,1}_\s\{0,1}_\(_\|\s\)*$/
" YAML frontmatter
if get(g:, 'vim_markdown_frontmatter', 0)
syn include @yamlTop syntax/yaml.vim
- syn region Comment matchgroup=mkdDelimiter start="\%^---$" end="^---$" contains=@yamlTop keepend
+ syn region Comment matchgroup=mkdDelimiter start="\%^---$" end="^\(---\|...\)$" contains=@yamlTop keepend
unlet! b:current_syntax
endif
if get(g:, 'vim_markdown_math', 0)
syn include @tex syntax/tex.vim
- syn region mkdMath start="\\\@<!\$" end="\$" contains=@tex keepend
- syn region mkdMath start="\\\@<!\$\$" end="\$\$" contains=@tex keepend
+ syn region mkdMath start="\\\@<!\$" end="\$" skip="\\\$" contains=@tex keepend
+ syn region mkdMath start="\\\@<!\$\$" end="\$\$" skip="\\\$" contains=@tex keepend
endif
syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath