+Before:
+ unlet! b:mkd_known_filetypes
+ unlet! b:mkd_included_filetypes
+ unlet! g:vim_markdown_math
+
Given markdown;
a **b** c
AssertEqual SyntaxOf('c'), 'htmlBoldItalic'
AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'
+Given markdown;
+*a
+
+Execute (not italic with an asterisk):
+ AssertNotEqual SyntaxOf('a'), 'htmlItalic'
+
+Given markdown;
+[__](a) b
+
+Execute (not bold with double underscores):
+ AssertNotEqual SyntaxOf('_'), 'htmlBold'
+ AssertNotEqual SyntaxOf('a'), 'htmlBold'
+ AssertNotEqual SyntaxOf('b'), 'htmlBold'
+
# Links
Given markdown;
setlocal conceallevel=0
endif
+Execute (disable conceal):
+ if has('conceal')
+ let g:vim_markdown_conceal=0
+ syn off | syn on
+ setlocal conceallevel=2
+ AssertEqual synconcealed(1, 1)[0], 0
+ AssertEqual synconcealed(1, 2)[0], 0
+ AssertEqual synconcealed(1, 3)[0], 0
+ AssertEqual synconcealed(1, 4)[0], 0
+ AssertEqual synconcealed(1, 4)[0], 0
+ AssertEqual synconcealed(1, 5)[0], 0
+ AssertEqual synconcealed(1, 6)[0], 0
+
+ let g:vim_markdown_conceal=1
+ syn off | syn on
+ AssertEqual synconcealed(1, 1)[0], 1
+ AssertEqual synconcealed(1, 2)[0], 0
+ AssertEqual synconcealed(1, 3)[0], 1
+ AssertEqual synconcealed(1, 4)[0], 1
+ AssertEqual synconcealed(1, 4)[0], 1
+ AssertEqual synconcealed(1, 5)[0], 1
+ AssertEqual synconcealed(1, 6)[0], 1
+
+ setlocal conceallevel=0
+ unlet g:vim_markdown_conceal
+ syn off | syn on
+ endif
+
# Autolinks
Given markdown;
AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
AssertEqual SyntaxOf('def'), 'rubyDefine'
+Given markdown;
+``` c++
+#include <iostream>
+code
+```
+
+``` vim
+let g:a = 1
+```
+
+``` ruby
+def a
+end
+```
+
+```
+ruby
+class B
+end
+```
+
+Execute (fenced code block syntax with a language specifier after whitespace):
+ let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
+ call b:func(0)
+ AssertEqual SyntaxOf('include'), 'cInclude'
+ AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
+ AssertEqual SyntaxOf('g:a'), 'vimVar'
+ AssertEqual SyntaxOf('def'), 'rubyDefine'
+ AssertNotEqual SyntaxOf('class'), 'rubyClass'
+
Given markdown;
```vim
let g:a = 1
AssertEqual SyntaxOf('g:a'), 'vimVar'
AssertEqual SyntaxOf('g:b'), 'vimVar'
+Given markdown;
+```csharp
+var s = "foo";
+```
+
+Execute (fenced code block languages setting):
+ let g:vim_markdown_fenced_languages = ['csharp=cs']
+ source ../ftplugin/markdown.vim
+ let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
+ call b:func(0)
+ AssertEqual SyntaxOf('foo'), 'csString'
+ unlet g:vim_markdown_fenced_languages
+
+Given markdown;
+```vim
+let g:a = 1
+```
+
+Execute (fenced code block includes language syntax with reopening same buffer):
+ let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
+ call b:func(0)
+ split
+ quit
+ edit
+ set filetype=markdown
+ execute "normal! i```vim\<cr>let g:a = 1\<cr>```"
+ call b:func(1)
+ AssertEqual SyntaxOf('g:a'), 'vimVar'
+
Given markdown;
```a+b-
code
AssertEqual SyntaxOf('sqrt'), 'texStatement'
AssertEqual SyntaxOf('frac'), 'texStatement'
+Given markdown;
+$a b[$ c
+
+Execute (math ends with $):
+ let g:vim_markdown_math=1
+ syn off | syn on
+ AssertEqual SyntaxOf('a'), 'mkdMath'
+ AssertEqual SyntaxOf('b'), 'mkdMath'
+ AssertNotEqual SyntaxOf('c')[0:2], 'tex'
+
+Given markdown;
+$$a b[$$ c
+
+Execute (math ends with $$):
+ let g:vim_markdown_math=1
+ syn off | syn on
+ AssertEqual SyntaxOf('a'), 'mkdMath'
+ AssertEqual SyntaxOf('b'), 'mkdMath'
+ AssertNotEqual SyntaxOf('c')[0:2], 'tex'
+
# YAML frontmatter
Given markdown;