X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/3522dd502b500365afe4462241921216f1d3ec1d..0a534a29f490adcd0612ff10a53b04109385404c:/test/syntax.vader diff --git a/test/syntax.vader b/test/syntax.vader index 5b9d605..af80fcd 100644 --- a/test/syntax.vader +++ b/test/syntax.vader @@ -1,3 +1,7 @@ +Before: + unlet! b:mkd_known_filetypes + unlet! b:mkd_included_filetypes + Given markdown; a **b** c @@ -148,6 +152,20 @@ Execute (bold italic with asterisks in multiple lines): 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; @@ -193,15 +211,45 @@ Given markdown; [a](b) Execute (conceal link): - setlocal conceallevel=2 - 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 + if has('conceal') + setlocal conceallevel=2 + 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 + 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 @@ -215,6 +263,12 @@ Execute (autolink): AssertEqual SyntaxOf('>'), 'mkdDelimiter' AssertNotEqual SyntaxOf('c'), 'mkdInlineURL' +Given markdown; +http://12monkeys.foo + +Execute (autolink with domain starting with a number): + AssertEqual SyntaxOf('12monkeys'), 'mkdInlineURL' + Given markdown; @@ -373,6 +427,80 @@ Execute (fenced code block syntax with a language specifier): AssertEqual SyntaxOf('code'), 'mkdSnippetCPP' AssertEqual SyntaxOf('def'), 'rubyDefine' +Given markdown; +``` c++ +#include +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 +``` + +```viml +let g:b = 1 +``` + +Execute (fenced code block syntax with alias language specifier): + let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax') + call b:func(0) + 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\let g:a = 1\```" + call b:func(1) + AssertEqual SyntaxOf('g:a'), 'vimVar' + Given markdown; ```a+b- code @@ -383,7 +511,6 @@ Execute (fenced code block syntax with an unknown language specifier): call b:func(0) AssertEqual SyntaxOf('code'), 'mkdSnippetA_B_' - Given markdown; ``` = @@ -395,6 +522,48 @@ Execute (first = or - in fenced code block is not setex headers): AssertEqual SyntaxOf('='), 'mkdCode' AssertEqual SyntaxOf('-'), 'mkdCode' +Given markdown; +``` {style=""} +a +``` + +Execute (fenced code block with extended info strings): + AssertEqual SyntaxOf('a'), 'mkdCode' + +# Code Blocks in pre and code tag + +Given markdown; +
+a
+
+ +Execute (code block in pre tag): + AssertEqual SyntaxOf('a'), 'mkdCode' + +Given markdown; + +a + + +Execute (code block in code tag): + AssertEqual SyntaxOf('a'), 'mkdCode' + +Given markdown; +\ +a +\ + +Execute (not code block in escaped pre tag): + AssertNotEqual SyntaxOf('a'), 'mkdCode' + +Given markdown; +\ +a +\ + +Execute (not code block in escaped code tag): + AssertNotEqual SyntaxOf('a'), 'mkdCode' + # Math Given markdown; @@ -459,13 +628,13 @@ a: b --- Execute (YAML frontmatter is controlled by the option): - AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey' + AssertNotEqual SyntaxOf('a')[0:3], 'yaml' let g:vim_markdown_frontmatter=1 syn off | syn on - AssertEqual SyntaxOf('a'), 'yamlBlockMappingKey' + AssertEqual SyntaxOf('a')[0:3], 'yaml' let g:vim_markdown_frontmatter=0 syn off | syn on - AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey' + AssertNotEqual SyntaxOf('a')[0:3], 'yaml' Given markdown; @@ -476,7 +645,7 @@ 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' + AssertNotEqual SyntaxOf('a')[0:3], 'yaml' Given markdown; --- @@ -489,6 +658,65 @@ Execute (rules are not mistaken by YAML frontmatter delimiters): let g:vim_markdown_frontmatter=1 syn off | syn on AssertEqual SyntaxAt(5, 1), 'mkdRule' + unlet g:vim_markdown_frontmatter + +# TOML frontmatter + +Given markdown; ++++ +a = "b" ++++ + +Execute (TOML frontmatter is controlled by the option): + syn off | syn on + AssertNotEqual SyntaxOf('b'), 'tomlString' + let g:vim_markdown_toml_frontmatter=1 + syn off | syn on + AssertEqual SyntaxOf('b'), 'tomlString' + let g:vim_markdown_toml_frontmatter=0 + syn off | syn on + AssertNotEqual SyntaxOf('b'), 'tomlString' + +Given markdown; + ++++ +a = "b" ++++ + +Execute (TOML frontmatter only works if it's the first thing in the file): + let g:vim_markdown_toml_frontmatter=1 + syn off | syn on + AssertNotEqual SyntaxOf('b'), 'tomlString' + unlet g:vim_markdown_toml_frontmatter + +# JSON frontmatter + +Given markdown; +{ + "a": "b" +} + +Execute (JSON frontmatter is controlled by the option): + syn off | syn on + AssertNotEqual SyntaxOf('a'), 'jsonKeyword' + let g:vim_markdown_json_frontmatter=1 + syn off | syn on + AssertEqual SyntaxOf('a'), 'jsonKeyword' + let g:vim_markdown_json_frontmatter=0 + syn off | syn on + AssertNotEqual SyntaxOf('a'), 'jsonKeyword' + +Given markdown; + +{ + "a": "b" +} + +Execute (JSON frontmatter only works if it's the first thing in the file): + let g:vim_markdown_json_frontmatter=1 + syn off | syn on + AssertNotEqual SyntaxOf('a'), 'jsonKeyword' + unlet g:vim_markdown_json_frontmatter # Header @@ -624,6 +852,14 @@ Execute (& and > are not marked as htmlError in lists): AssertNotEqual SyntaxOf('&'), 'htmlError' AssertNotEqual SyntaxOf('>'), 'htmlError' +Given markdown; +1. a +2. b + +Execute (list after line break): + AssertEqual SyntaxOf('1'), 'mkdListItem' + AssertEqual SyntaxOf('2'), 'mkdListItem' + # HTML Given markdown;