Given markdown; a **b** c Execute (bold): AssertNotEqual SyntaxOf('a'), 'htmlBold' AssertEqual SyntaxOf('b'), 'htmlBold' AssertNotEqual SyntaxOf('c'), 'htmlBold' Given markdown; a __b__ c Execute (bold): AssertNotEqual SyntaxOf('a'), 'htmlBold' AssertEqual SyntaxOf('b'), 'htmlBold' AssertNotEqual SyntaxOf('c'), 'htmlBold' Given markdown; a *b* c Execute (italic): AssertNotEqual SyntaxOf('a'), 'htmlItalic' AssertEqual SyntaxOf('b'), 'htmlItalic' AssertNotEqual SyntaxOf('c'), 'htmlItalic' Given markdown; a _b_ c Execute (italic): AssertNotEqual SyntaxOf('a'), 'htmlItalic' AssertEqual SyntaxOf('b'), 'htmlItalic' AssertNotEqual SyntaxOf('c'), 'htmlItalic' Given markdown; a \*b\* c Execute (not italic with escaped asterisks): AssertNotEqual SyntaxOf('a'), 'htmlItalic' AssertNotEqual SyntaxOf('b'), 'htmlItalic' AssertNotEqual SyntaxOf('c'), 'htmlItalic' Given markdown; a \_b\_ c Execute (not italic with escaped underscores): AssertNotEqual SyntaxOf('a'), 'htmlItalic' AssertNotEqual SyntaxOf('b'), 'htmlItalic' AssertNotEqual SyntaxOf('c'), 'htmlItalic' Given markdown; a _b\_c_ d Execute (italic with escaped underscores): AssertNotEqual SyntaxOf('a'), 'htmlItalic' AssertEqual SyntaxOf('b'), 'htmlItalic' AssertEqual SyntaxOf('c'), 'htmlItalic' AssertNotEqual SyntaxOf('d'), 'htmlItalic' Given markdown; a __b\_\_c__ d Execute (bold with escaped underscores): AssertNotEqual SyntaxOf('a'), 'htmlBold' AssertEqual SyntaxOf('b'), 'htmlBold' AssertEqual SyntaxOf('c'), 'htmlBold' AssertNotEqual SyntaxOf('d'), 'htmlBold' # Links Given markdown; [a](b) Execute (link with title): AssertEqual SyntaxOf('a'), 'mkdLink' AssertEqual SyntaxOf('b'), 'mkdURL' Given markdown; (a) (b) Execute (parenthesis not in link): AssertNotEqual SyntaxOf('a'), 'mkdURL' AssertNotEqual SyntaxOf('b'), 'mkdURL' Given markdown; [a](b) c [d](e) Execute (multiple links on a line): AssertEqual SyntaxOf('c'), '' # Autolinks Given markdown; a c Execute (autolink): AssertNotEqual SyntaxOf('a'), 'mkdInlineURL' AssertEqual SyntaxOf('<'), 'mkdDelimiter' AssertEqual SyntaxOf('b'), 'mkdInlineURL' AssertEqual SyntaxOf('>'), 'mkdDelimiter' AssertNotEqual SyntaxOf('c'), 'mkdInlineURL' Given markdown; Execute (autolink with scheme case is insensitive): AssertEqual SyntaxOf('a'), 'mkdInlineURL' Given markdown; Execute (autolink without known scheme is not a link): AssertNotEqual SyntaxOf('n'), 'mkdInlineURL' Given markdown; Execute (autolink without scheme is not a link): AssertNotEqual SyntaxOf('a'), 'mkdInlineURL' Given markdown; < http://a > Execute (autolink with space is not a link): AssertNotEqual SyntaxOf('a'), 'mkdInlineURL' AssertNotEqual SyntaxOf('b'), 'mkdInlineURL' AssertNotEqual SyntaxOf('c'), 'mkdInlineURL' AssertNotEqual SyntaxOf('d'), 'mkdInlineURL' AssertNotEqual SyntaxOf('e'), 'mkdInlineURL' Given markdown; \ Execute (autolinks can be backslash escaped): AssertNotEqual SyntaxOf('<'), 'mkdDelimiter' Given markdown; a (http://b) c Execute (autolink in parenthesis): AssertNotEqual SyntaxOf('a'), 'mkdInlineURL' AssertEqual SyntaxOf('('), 'mkdDelimiter' AssertEqual SyntaxOf('b'), 'mkdInlineURL' AssertEqual SyntaxOf(')'), 'mkdDelimiter' AssertNotEqual SyntaxOf('c'), 'mkdInlineURL' Given markdown; [![a](http://b)](http://c) Execute (autolink in link text): AssertEqual SyntaxOf('!'), 'mkdDelimiter' AssertEqual SyntaxOf('a'), 'mkdLink' AssertEqual SyntaxOf('b'), 'mkdURL' AssertEqual SyntaxOf('c'), 'mkdURL' # Code Blocks Given markdown; ~~~ code ~~~ Execute (code blocks can be fenced with tildes): AssertEqual SyntaxOf('c'), 'mkdCode' Given markdown; ~~~ruby code ~~~ Execute (code blocks can have a language specifier): AssertEqual SyntaxOf('c'), 'mkdCode' Given markdown; ```c++ code ``` text Execute (code blocks can be fenced with backticks and a language specifier): AssertEqual SyntaxOf('code'), 'mkdCode' AssertNotEqual SyntaxOf('text'), 'mkdCode' # Math Given markdown; a $x$ b c $$y$$ d \$e\$ \$\$f\$\$ Execute (math): AssertNotEqual SyntaxOf('x'), 'mkdMath' AssertNotEqual SyntaxOf('y'), 'mkdMath' let g:vim_markdown_math=1 syn off | syn on AssertNotEqual SyntaxOf('a'), 'mkdMath' AssertNotEqual SyntaxOf('b'), 'mkdMath' AssertNotEqual SyntaxOf('c'), 'mkdMath' AssertNotEqual SyntaxOf('d'), 'mkdMath' AssertNotEqual SyntaxOf('e'), 'mkdMath' AssertNotEqual SyntaxOf('f'), 'mkdMath' AssertEqual SyntaxOf('x'), 'mkdMath' AssertEqual SyntaxOf('y'), 'mkdMath' let g:vim_markdown_math=0 syn off | syn on AssertNotEqual SyntaxOf('x'), 'mkdMath' AssertNotEqual SyntaxOf('y'), 'mkdMath' Given markdown; a $ b $ c Execute (multiline math): let g:vim_markdown_math=1 syn off | syn on AssertNotEqual SyntaxOf('a'), 'mkdMath' AssertEqual SyntaxOf('b'), 'mkdMath' AssertNotEqual SyntaxOf('c'), 'mkdMath' Given markdown; $ \sqrt{a}{b} $ $$ \frac{a}{b} $$ Execute (math tex highlighting): let g:vim_markdown_math=0 syn off | syn on AssertNotEqual SyntaxOf('sqrt'), 'texStatement' AssertNotEqual SyntaxOf('frac'), 'texStatement' let g:vim_markdown_math=1 syn off | syn on AssertEqual SyntaxOf('sqrt'), 'texStatement' AssertEqual SyntaxOf('frac'), 'texStatement' # YAML frontmatter Given markdown; --- a: b --- Execute (YAML frontmatter is controlled by the option): AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey' let g:vim_markdown_frontmatter=1 syn off | syn on AssertEqual SyntaxOf('a'), 'yamlBlockMappingKey' let g:vim_markdown_frontmatter=0 syn off | syn on AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey' Given markdown; --- a: b --- Execute (YAML frontmatter only works if it's the first thing in the file): let g:vim_markdown_frontmatter=1 syn off | syn on AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey' Given markdown; --- a: b --- --- Execute (rules are not mistaken by YAML frontmatter delimiters): let g:vim_markdown_frontmatter=1 syn off | syn on AssertEqual SyntaxAt(5, 1), 'mkdRule' # Header Given markdown; # #a ccc ## #b ddd Execute (header title starts with #): AssertEqual SyntaxOf('a'), 'htmlH1' AssertEqual SyntaxOf('b'), 'htmlH2' # List Given markdown; - a & b 1. c > d Execute (& and > are not marked as htmlError in lists): AssertEqual SyntaxOf('-'), 'mkdListItem' AssertEqual SyntaxOf('1.'), 'mkdListItem' AssertNotEqual SyntaxOf('&'), 'htmlError' AssertNotEqual SyntaxOf('>'), 'htmlError' # HTML Given markdown; a

b

- c Execute (HTML tag in text): AssertEqual SyntaxOf('p'), 'htmlTagName' AssertEqual SyntaxOf('

'), 'htmlTag' AssertEqual SyntaxOf('

'), 'htmlEndTag' AssertEqual SyntaxOf('span'), 'htmlTagName' AssertEqual SyntaxOf(''), 'htmlTag' AssertEqual SyntaxOf(''), 'htmlEndTag'