All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
2 unlet! b:mkd_known_filetypes
3 unlet! b:mkd_included_filetypes
4 unlet! g:vim_markdown_math
5 unlet! b:liquid_subtype
11 AssertNotEqual SyntaxOf('a'), 'htmlBold'
12 AssertEqual SyntaxOf('b'), 'htmlBold'
13 AssertNotEqual SyntaxOf('c'), 'htmlBold'
19 AssertNotEqual SyntaxOf('a'), 'htmlBold'
20 AssertEqual SyntaxOf('b'), 'htmlBold'
21 AssertNotEqual SyntaxOf('c'), 'htmlBold'
27 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
28 AssertEqual SyntaxOf('b'), 'htmlItalic'
29 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
35 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
36 AssertEqual SyntaxOf('b'), 'htmlItalic'
37 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
42 Execute (italic text has underscores):
43 AssertEqual SyntaxOf('a'), 'htmlItalic'
44 AssertEqual SyntaxOf('b'), 'htmlItalic'
49 Execute (not italic with escaped asterisks):
50 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
51 AssertNotEqual SyntaxOf('b'), 'htmlItalic'
52 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
57 Execute (not italic with escaped underscores):
58 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
59 AssertNotEqual SyntaxOf('b'), 'htmlItalic'
60 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
65 Execute (italic with escaped underscores):
66 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
67 AssertEqual SyntaxOf('b'), 'htmlItalic'
68 AssertEqual SyntaxOf('c'), 'htmlItalic'
69 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
74 Execute (not italic underscores within text):
75 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
76 AssertNotEqual SyntaxOf('b'), 'htmlItalic'
77 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
82 Execute (italic with escaped asterisks):
83 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
84 AssertEqual SyntaxOf('b'), 'htmlItalic'
85 AssertEqual SyntaxOf('c'), 'htmlItalic'
86 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
91 Execute (bold with escaped underscores):
92 AssertNotEqual SyntaxOf('a'), 'htmlBold'
93 AssertEqual SyntaxOf('b'), 'htmlBold'
94 AssertEqual SyntaxOf('c'), 'htmlBold'
95 AssertNotEqual SyntaxOf('d'), 'htmlBold'
101 Execute (italic with underscores in multiple lines):
102 AssertEqual SyntaxOf('a'), 'htmlItalic'
103 AssertEqual SyntaxOf('b'), 'htmlItalic'
104 AssertEqual SyntaxOf('c'), 'htmlItalic'
105 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
111 Execute (bold with underscores in multiple lines):
112 AssertEqual SyntaxOf('a'), 'htmlBold'
113 AssertEqual SyntaxOf('b'), 'htmlBold'
114 AssertEqual SyntaxOf('c'), 'htmlBold'
115 AssertNotEqual SyntaxOf('d'), 'htmlBold'
121 Execute (bold italic with underscores in multiple lines):
122 AssertEqual SyntaxOf('a'), 'htmlBoldItalic'
123 AssertEqual SyntaxOf('b'), 'htmlBoldItalic'
124 AssertEqual SyntaxOf('c'), 'htmlBoldItalic'
125 AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'
131 Execute (italic with asterisks in multiple lines):
132 AssertEqual SyntaxOf('a'), 'htmlItalic'
133 AssertEqual SyntaxOf('b'), 'htmlItalic'
134 AssertEqual SyntaxOf('c'), 'htmlItalic'
135 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
141 Execute (bold with asterisks in multiple lines):
142 AssertEqual SyntaxOf('a'), 'htmlBold'
143 AssertEqual SyntaxOf('b'), 'htmlBold'
144 AssertEqual SyntaxOf('c'), 'htmlBold'
145 AssertNotEqual SyntaxOf('d'), 'htmlBold'
151 Execute (bold italic with asterisks in multiple lines):
152 AssertEqual SyntaxOf('a'), 'htmlBoldItalic'
153 AssertEqual SyntaxOf('b'), 'htmlBoldItalic'
154 AssertEqual SyntaxOf('c'), 'htmlBoldItalic'
155 AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'
160 Execute (not italic with an asterisk):
161 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
166 Execute (not bold with double underscores):
167 AssertNotEqual SyntaxOf('_'), 'htmlBold'
168 AssertNotEqual SyntaxOf('a'), 'htmlBold'
169 AssertNotEqual SyntaxOf('b'), 'htmlBold'
174 Execute (conceal italic):
176 setlocal conceallevel=2
177 AssertEqual synconcealed(1, 1)[0], 1
178 AssertEqual synconcealed(1, 2)[0], 0
179 AssertEqual synconcealed(1, 3)[0], 1
180 setlocal conceallevel=0
183 Execute (disable conceal):
185 let g:vim_markdown_conceal=0
187 setlocal conceallevel=2
188 AssertEqual synconcealed(1, 1)[0], 0
189 AssertEqual synconcealed(1, 2)[0], 0
190 AssertEqual synconcealed(1, 3)[0], 0
192 let g:vim_markdown_conceal=1
194 AssertEqual synconcealed(1, 1)[0], 1
195 AssertEqual synconcealed(1, 2)[0], 0
196 AssertEqual synconcealed(1, 3)[0], 1
198 setlocal conceallevel=0
199 unlet g:vim_markdown_conceal
206 Execute (conceal italic):
208 setlocal conceallevel=2
209 AssertEqual synconcealed(1, 1)[0], 1
210 AssertEqual synconcealed(1, 2)[0], 0
211 AssertEqual synconcealed(1, 3)[0], 1
212 setlocal conceallevel=0
215 Execute (disable conceal):
217 let g:vim_markdown_conceal=0
219 setlocal conceallevel=2
220 AssertEqual synconcealed(1, 1)[0], 0
221 AssertEqual synconcealed(1, 2)[0], 0
222 AssertEqual synconcealed(1, 3)[0], 0
224 let g:vim_markdown_conceal=1
226 AssertEqual synconcealed(1, 1)[0], 1
227 AssertEqual synconcealed(1, 2)[0], 0
228 AssertEqual synconcealed(1, 3)[0], 1
230 setlocal conceallevel=0
231 unlet g:vim_markdown_conceal
238 Execute (conceal bold):
240 setlocal conceallevel=2
241 AssertEqual synconcealed(1, 1)[0], 1
242 AssertEqual synconcealed(1, 2)[0], 1
243 AssertEqual synconcealed(1, 3)[0], 0
244 AssertEqual synconcealed(1, 4)[0], 1
245 AssertEqual synconcealed(1, 5)[0], 1
246 setlocal conceallevel=0
249 Execute (disable conceal):
251 let g:vim_markdown_conceal=0
253 setlocal conceallevel=2
254 AssertEqual synconcealed(1, 1)[0], 0
255 AssertEqual synconcealed(1, 2)[0], 0
256 AssertEqual synconcealed(1, 3)[0], 0
257 AssertEqual synconcealed(1, 4)[0], 0
258 AssertEqual synconcealed(1, 5)[0], 0
260 let g:vim_markdown_conceal=1
262 AssertEqual synconcealed(1, 1)[0], 1
263 AssertEqual synconcealed(1, 2)[0], 1
264 AssertEqual synconcealed(1, 3)[0], 0
265 AssertEqual synconcealed(1, 4)[0], 1
266 AssertEqual synconcealed(1, 5)[0], 1
268 setlocal conceallevel=0
269 unlet g:vim_markdown_conceal
276 Execute (conceal bold):
278 setlocal conceallevel=2
279 AssertEqual synconcealed(1, 1)[0], 1
280 AssertEqual synconcealed(1, 2)[0], 1
281 AssertEqual synconcealed(1, 3)[0], 0
282 AssertEqual synconcealed(1, 4)[0], 1
283 AssertEqual synconcealed(1, 5)[0], 1
284 setlocal conceallevel=0
287 Execute (disable conceal):
289 let g:vim_markdown_conceal=0
291 setlocal conceallevel=2
292 AssertEqual synconcealed(1, 1)[0], 0
293 AssertEqual synconcealed(1, 2)[0], 0
294 AssertEqual synconcealed(1, 3)[0], 0
295 AssertEqual synconcealed(1, 4)[0], 0
296 AssertEqual synconcealed(1, 5)[0], 0
298 let g:vim_markdown_conceal=1
300 AssertEqual synconcealed(1, 1)[0], 1
301 AssertEqual synconcealed(1, 2)[0], 1
302 AssertEqual synconcealed(1, 3)[0], 0
303 AssertEqual synconcealed(1, 4)[0], 1
304 AssertEqual synconcealed(1, 5)[0], 1
306 setlocal conceallevel=0
307 unlet g:vim_markdown_conceal
314 Execute (conceal italic bold):
316 setlocal conceallevel=2
317 AssertEqual synconcealed(1, 1)[0], 1
318 AssertEqual synconcealed(1, 2)[0], 1
319 AssertEqual synconcealed(1, 3)[0], 1
320 AssertEqual synconcealed(1, 4)[0], 0
321 AssertEqual synconcealed(1, 5)[0], 1
322 AssertEqual synconcealed(1, 6)[0], 1
323 AssertEqual synconcealed(1, 7)[0], 1
324 setlocal conceallevel=0
327 Execute (disable conceal):
329 let g:vim_markdown_conceal=0
331 setlocal conceallevel=2
332 AssertEqual synconcealed(1, 1)[0], 0
333 AssertEqual synconcealed(1, 2)[0], 0
334 AssertEqual synconcealed(1, 3)[0], 0
335 AssertEqual synconcealed(1, 4)[0], 0
336 AssertEqual synconcealed(1, 5)[0], 0
337 AssertEqual synconcealed(1, 6)[0], 0
338 AssertEqual synconcealed(1, 7)[0], 0
340 let g:vim_markdown_conceal=1
342 AssertEqual synconcealed(1, 1)[0], 1
343 AssertEqual synconcealed(1, 2)[0], 1
344 AssertEqual synconcealed(1, 3)[0], 1
345 AssertEqual synconcealed(1, 4)[0], 0
346 AssertEqual synconcealed(1, 5)[0], 1
347 AssertEqual synconcealed(1, 6)[0], 1
348 AssertEqual synconcealed(1, 7)[0], 1
350 setlocal conceallevel=0
351 unlet g:vim_markdown_conceal
358 Execute (conceal italic bold):
360 setlocal conceallevel=2
361 AssertEqual synconcealed(1, 1)[0], 1
362 AssertEqual synconcealed(1, 2)[0], 1
363 AssertEqual synconcealed(1, 3)[0], 1
364 AssertEqual synconcealed(1, 4)[0], 0
365 AssertEqual synconcealed(1, 5)[0], 1
366 AssertEqual synconcealed(1, 6)[0], 1
367 AssertEqual synconcealed(1, 7)[0], 1
368 setlocal conceallevel=0
371 Execute (disable conceal):
373 let g:vim_markdown_conceal=0
375 setlocal conceallevel=2
376 AssertEqual synconcealed(1, 1)[0], 0
377 AssertEqual synconcealed(1, 2)[0], 0
378 AssertEqual synconcealed(1, 3)[0], 0
379 AssertEqual synconcealed(1, 4)[0], 0
380 AssertEqual synconcealed(1, 5)[0], 0
381 AssertEqual synconcealed(1, 6)[0], 0
382 AssertEqual synconcealed(1, 7)[0], 0
384 let g:vim_markdown_conceal=1
386 AssertEqual synconcealed(1, 1)[0], 1
387 AssertEqual synconcealed(1, 2)[0], 1
388 AssertEqual synconcealed(1, 3)[0], 1
389 AssertEqual synconcealed(1, 4)[0], 0
390 AssertEqual synconcealed(1, 5)[0], 1
391 AssertEqual synconcealed(1, 6)[0], 1
392 AssertEqual synconcealed(1, 7)[0], 1
394 setlocal conceallevel=0
395 unlet g:vim_markdown_conceal
404 Execute (link with title):
405 AssertEqual SyntaxOf('a'), 'mkdLink'
406 AssertEqual SyntaxOf('b'), 'mkdURL'
412 Execute (link text with newline):
413 AssertEqual SyntaxOf('a'), 'mkdLink'
414 AssertEqual SyntaxOf('b'), 'mkdLink'
415 AssertEqual SyntaxOf('c'), 'mkdURL'
420 Execute (link text with bracket sections):
421 AssertNotEqual SyntaxOf('a'), 'mkdLink'
422 AssertNotEqual SyntaxOf('b'), 'mkdLink'
423 AssertEqual SyntaxOf('c'), 'mkdLink'
424 AssertEqual SyntaxOf('d'), 'mkdURL'
429 Execute (footnote is not link):
430 AssertNotEqual SyntaxOf('a'), 'mkdLinkDef'
437 Execute (parenthesis not in link):
438 AssertNotEqual SyntaxOf('a'), 'mkdURL'
439 AssertNotEqual SyntaxOf('b'), 'mkdURL'
444 Execute (multiple links on a line):
445 AssertNotEqual SyntaxOf('c'), 'mkdLink'
446 AssertNotEqual SyntaxOf('c'), 'mkdURL'
451 Execute (space is not allowed between link text and parenthesis):
452 AssertNotEqual SyntaxOf('a'), 'mkdLink'
453 AssertNotEqual SyntaxOf('b'), 'mkdURL'
458 Execute (conceal link):
460 setlocal conceallevel=2
461 AssertEqual synconcealed(1, 1)[0], 1
462 AssertEqual synconcealed(1, 2)[0], 0
463 AssertEqual synconcealed(1, 3)[0], 1
464 AssertEqual synconcealed(1, 4)[0], 1
465 AssertEqual synconcealed(1, 4)[0], 1
466 AssertEqual synconcealed(1, 5)[0], 1
467 AssertEqual synconcealed(1, 6)[0], 1
468 setlocal conceallevel=0
471 Execute (disable conceal):
473 let g:vim_markdown_conceal=0
475 setlocal conceallevel=2
476 AssertEqual synconcealed(1, 1)[0], 0
477 AssertEqual synconcealed(1, 2)[0], 0
478 AssertEqual synconcealed(1, 3)[0], 0
479 AssertEqual synconcealed(1, 4)[0], 0
480 AssertEqual synconcealed(1, 4)[0], 0
481 AssertEqual synconcealed(1, 5)[0], 0
482 AssertEqual synconcealed(1, 6)[0], 0
484 let g:vim_markdown_conceal=1
486 AssertEqual synconcealed(1, 1)[0], 1
487 AssertEqual synconcealed(1, 2)[0], 0
488 AssertEqual synconcealed(1, 3)[0], 1
489 AssertEqual synconcealed(1, 4)[0], 1
490 AssertEqual synconcealed(1, 4)[0], 1
491 AssertEqual synconcealed(1, 5)[0], 1
492 AssertEqual synconcealed(1, 6)[0], 1
494 setlocal conceallevel=0
495 unlet g:vim_markdown_conceal
505 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
506 AssertEqual SyntaxOf('<'), 'mkdDelimiter'
507 AssertEqual SyntaxOf('b'), 'mkdInlineURL'
508 AssertEqual SyntaxOf('>'), 'mkdDelimiter'
509 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
514 Execute (autolink with domain starting with a number):
515 AssertEqual SyntaxOf('12monkeys'), 'mkdInlineURL'
520 Execute (autolink with scheme case is insensitive):
521 AssertEqual SyntaxOf('a'), 'mkdInlineURL'
526 Execute (autolink without scheme is not a link):
527 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
535 Execute (autolink with space is not a link):
536 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
537 AssertNotEqual SyntaxOf('b'), 'mkdInlineURL'
538 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
539 AssertNotEqual SyntaxOf('d'), 'mkdInlineURL'
540 AssertNotEqual SyntaxOf('e'), 'mkdInlineURL'
545 Execute (autolinks can be backslash escaped):
546 AssertNotEqual SyntaxOf('<'), 'mkdDelimiter'
551 Execute (autolink in parenthesis):
552 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
553 AssertEqual SyntaxOf('('), 'mkdDelimiter'
554 AssertEqual SyntaxOf('b'), 'mkdInlineURL'
555 AssertEqual SyntaxOf(')'), 'mkdDelimiter'
556 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
559 [](http://c)
561 Execute (autolink in link text):
562 AssertEqual SyntaxOf('!'), 'mkdDelimiter'
563 AssertEqual SyntaxOf('a'), 'mkdLink'
564 AssertEqual SyntaxOf('b'), 'mkdURL'
565 AssertEqual SyntaxOf('c'), 'mkdURL'
586 Execute (link in headers):
587 AssertEqual SyntaxOf('h1link'), 'mkdLink'
588 AssertEqual SyntaxOf('h2link'), 'mkdLink'
589 AssertEqual SyntaxOf('h3link'), 'mkdLink'
590 AssertEqual SyntaxOf('h4link'), 'mkdLink'
591 AssertEqual SyntaxOf('h5link'), 'mkdLink'
592 AssertEqual SyntaxOf('h6link'), 'mkdLink'
593 AssertEqual SyntaxOf('h1link_b'), 'mkdLink'
594 AssertEqual SyntaxOf('h2link_b'), 'mkdLink'
601 ### http://h3link.foo
603 #### http://h4link.foo
605 ##### http://h5link.foo
607 ###### http://h6link.foo
615 Execute (inline url in headers):
616 AssertEqual SyntaxOf('h1link'), 'mkdInlineURL'
617 AssertEqual SyntaxOf('h2link'), 'mkdInlineURL'
618 AssertEqual SyntaxOf('h3link'), 'mkdInlineURL'
619 AssertEqual SyntaxOf('h4link'), 'mkdInlineURL'
620 AssertEqual SyntaxOf('h5link'), 'mkdInlineURL'
621 AssertEqual SyntaxOf('h6link'), 'mkdInlineURL'
622 AssertEqual SyntaxOf('h1link_b'), 'mkdInlineURL'
623 AssertEqual SyntaxOf('h2link_b'), 'mkdInlineURL'
629 Execute (link in blockquote):
630 AssertEqual SyntaxOf('a'), 'mkdLink'
631 AssertEqual SyntaxOf('foo'), 'mkdInlineURL'
634 [https://domain.tld](https://domain.com) not_a_link
636 Execute (link with url title):
637 AssertEqual SyntaxOf('https://domain.tld'), 'mkdInlineURL'
638 AssertNotEqual SyntaxOf(']'), 'mkdInlineURL'
639 AssertEqual SyntaxOf('https://domain.com'), 'mkdURL'
640 AssertNotEqual SyntaxOf('not_a_link'), 'mkdInlineURL'
649 Execute (code blocks can be fenced with tildes):
650 AssertEqual SyntaxOf('c'), 'mkdCode'
657 Execute (code blocks can be fenced with tildes longer than 3):
658 AssertEqual SyntaxOf('c'), 'mkdCode'
665 Execute (code blocks can be fenced with backticks longer than 3):
666 AssertEqual SyntaxOf('c'), 'mkdCode'
673 Execute (code blocks can have a language specifier):
674 AssertEqual SyntaxOf('c'), 'mkdCode'
683 Execute (code blocks can be fenced with backticks and a language specifier):
684 AssertEqual SyntaxOf('code'), 'mkdCode'
685 AssertNotEqual SyntaxOf('text'), 'mkdCode'
695 Execute (indent code blocks):
696 AssertNotEqual SyntaxOf('a'), 'mkdCode'
697 AssertEqual SyntaxOf('b'), 'mkdCode'
698 AssertEqual SyntaxOf('c'), 'mkdCode'
707 Execute (indent code blocks after header):
708 AssertNotEqual SyntaxOf('a'), 'mkdCode'
709 AssertNotEqual SyntaxOf('b'), 'mkdCode'
710 AssertEqual SyntaxOf('c'), 'mkdCode'
719 Execute (indent code blocks after list):
720 AssertNotEqual SyntaxOf('a'), 'mkdCode'
721 AssertNotEqual SyntaxOf('b'), 'mkdCode'
722 AssertEqual SyntaxOf('c'), 'mkdCode'
728 Execute (indent code block at beginning of file):
729 AssertEqual SyntaxOf('a'), 'mkdCode'
730 AssertEqual SyntaxOf('b'), 'mkdCode'
743 ```ruby {linenos=table,hl_lines=[8,"15-17"],linenostart=199}
748 Execute (fenced code block syntax with a language specifier):
749 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
751 AssertEqual SyntaxOf('include'), 'cInclude'
752 AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
753 AssertEqual SyntaxOf('def'), 'rubyDefine'
754 AssertEqual SyntaxOf('class'), 'rubyClass'
777 Execute (fenced code block syntax with a language specifier after whitespace):
778 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
780 AssertEqual SyntaxOf('include'), 'cInclude'
781 AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
782 AssertEqual SyntaxOf('g:a'), 'vimVar'
783 AssertEqual SyntaxOf('def'), 'rubyDefine'
784 AssertNotEqual SyntaxOf('class'), 'rubyClass'
795 Execute (fenced code block syntax with alias language specifier):
796 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
798 AssertEqual SyntaxOf('g:a'), 'vimVar'
799 AssertEqual SyntaxOf('g:b'), 'vimVar'
806 Execute (fenced code block languages setting):
807 let g:vim_markdown_fenced_languages = ['csharp=cs']
808 source ../ftplugin/markdown.vim
809 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
811 AssertEqual SyntaxOf('foo'), 'csString'
812 unlet g:vim_markdown_fenced_languages
819 Execute (fenced code block includes language syntax with reopening same buffer):
820 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
825 set filetype=markdown
826 execute "normal! i```vim\<cr>let g:a = 1\<cr>```"
828 AssertEqual SyntaxOf('g:a'), 'vimVar'
835 Execute (fenced code block syntax with an unknown language specifier):
836 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
838 AssertEqual SyntaxOf('code'), 'mkdSnippetA_B_'
847 Execute (first = or - in fenced code block is not setex headers):
848 AssertEqual SyntaxOf('='), 'mkdCode'
849 AssertEqual SyntaxOf('-'), 'mkdCode'
856 Execute (fenced code block with extended info strings):
857 AssertEqual SyntaxOf('a'), 'mkdCode'
864 Execute (fenced code block syntax in liquid file with markdown subtype):
865 let b:liquid_subtype = 'markdown'
866 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
868 AssertEqual SyntaxOf('g:a'), 'vimVar'
870 # Code Blocks in pre and code tag
877 Execute (code block in pre tag):
878 AssertEqual SyntaxOf('a'), 'mkdCode'
885 Execute (code block in code tag):
886 AssertEqual SyntaxOf('a'), 'mkdCode'
893 Execute (not code block in escaped pre tag):
894 AssertNotEqual SyntaxOf('a'), 'mkdCode'
901 Execute (not code block in escaped code tag):
902 AssertNotEqual SyntaxOf('a'), 'mkdCode'
909 Execute (code in code quotes):
910 AssertEqual SyntaxOf('a'), 'mkdCode'
915 Execute (code quotes not escaped ending with backslash):
916 AssertEqual SyntaxOf('a\'), 'mkdCode'
917 AssertNotEqual SyntaxOf('b'), 'mkdCode'
918 AssertEqual SyntaxOf('c\'), 'mkdCode'
919 AssertNotEqual SyntaxOf('d'), 'mkdCode'
924 Execute (double code quotes not escaped ending with backslash):
925 AssertEqual SyntaxOf('a\'), 'mkdCode'
926 AssertNotEqual SyntaxOf('b'), 'mkdCode'
927 AssertEqual SyntaxOf('c`\\`1'), 'mkdCode'
928 AssertNotEqual SyntaxOf('d'), 'mkdCode'
939 AssertNotEqual SyntaxOf('x')[0:2], 'tex'
940 AssertNotEqual SyntaxOf('y')[0:2], 'tex'
941 let g:vim_markdown_math=1
943 AssertNotEqual SyntaxOf('a')[0:2], 'tex'
944 AssertNotEqual SyntaxOf('b')[0:2], 'tex'
945 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
946 AssertNotEqual SyntaxOf('d')[0:2], 'tex'
947 AssertNotEqual SyntaxOf('e')[0:2], 'tex'
948 AssertNotEqual SyntaxOf('f')[0:2], 'tex'
949 AssertEqual SyntaxOf('x')[0:2], 'tex'
950 AssertEqual SyntaxOf('y')[0:2], 'tex'
951 let g:vim_markdown_math=0
953 AssertNotEqual SyntaxOf('x')[0:2], 'tex'
954 AssertNotEqual SyntaxOf('y')[0:2], 'tex'
965 Execute (multiline math):
966 let g:vim_markdown_math=1
968 AssertNotEqual SyntaxOf('a')[0:2], 'tex'
969 AssertEqual SyntaxOf('b')[0:2], 'tex'
970 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
976 Execute (math tex highlighting):
977 let g:vim_markdown_math=0
979 AssertNotEqual SyntaxOf('sqrt')[0:2], 'tex'
980 AssertNotEqual SyntaxOf('frac')[0:2], 'tex'
981 let g:vim_markdown_math=1
983 AssertEqual SyntaxOf('sqrt')[0:2], 'tex'
984 AssertEqual SyntaxOf('frac')[0:2], 'tex'
989 Execute (math ends with $):
990 let g:vim_markdown_math=1
992 AssertEqual SyntaxOf('a')[0:2], 'tex'
993 AssertEqual SyntaxOf('b')[0:2], 'tex'
994 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
999 Execute (math ends with $$):
1000 let g:vim_markdown_math=1
1002 AssertEqual SyntaxOf('a')[0:2], 'tex'
1003 AssertEqual SyntaxOf('b')[0:2], 'tex'
1004 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
1009 Execute (math conceal in $):
1011 setlocal conceallevel=2
1012 let g:vim_markdown_math=1
1014 AssertEqual synconcealed(1, 1)[0], 1, '$'
1015 AssertEqual synconcealed(1, 2)[0], 0
1016 AssertEqual synconcealed(1, 3)[0], 0
1017 AssertEqual synconcealed(1, 4)[0], 0
1018 AssertEqual synconcealed(1, 5)[0], 1, '\leq'
1019 AssertEqual synconcealed(1, 6)[0], 1
1020 AssertEqual synconcealed(1, 7)[0], 1
1021 AssertEqual synconcealed(1, 8)[0], 1
1022 AssertEqual synconcealed(1, 9)[0], 0
1023 AssertEqual synconcealed(1, 10)[0], 0
1024 AssertEqual synconcealed(1, 11)[0], 0
1025 AssertEqual synconcealed(1, 12)[0], 1, '$'
1026 setlocal conceallevel=0
1035 Execute (math conceal in $$):
1037 setlocal conceallevel=2
1038 let g:vim_markdown_math=1
1040 AssertEqual synconcealed(1, 1)[0], 1, '$$'
1041 AssertEqual synconcealed(2, 1)[0], 1, '\omega'
1042 AssertEqual synconcealed(3, 1)[0], 0, '0'
1043 AssertEqual synconcealed(3, 3)[0], 1, '\leq'
1044 AssertEqual synconcealed(3, 8)[0], 0, '1'
1045 AssertEqual synconcealed(4, 1)[0], 1, '$$'
1046 setlocal conceallevel=0
1056 Execute (YAML frontmatter is controlled by the option):
1057 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
1058 let g:vim_markdown_frontmatter=1
1060 AssertEqual SyntaxOf('a')[0:3], 'yaml'
1061 let g:vim_markdown_frontmatter=0
1063 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
1071 Execute (YAML frontmatter only works if it's the first thing in the file):
1072 let g:vim_markdown_frontmatter=1
1074 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
1083 Execute (rules are not mistaken by YAML frontmatter delimiters):
1084 let g:vim_markdown_frontmatter=1
1086 AssertEqual SyntaxAt(5, 1), 'mkdRule'
1087 unlet g:vim_markdown_frontmatter
1096 Execute (TOML frontmatter is controlled by the option):
1098 AssertNotEqual SyntaxOf('b'), 'tomlString'
1099 let g:vim_markdown_toml_frontmatter=1
1101 AssertEqual SyntaxOf('b'), 'tomlString'
1102 let g:vim_markdown_toml_frontmatter=0
1104 AssertNotEqual SyntaxOf('b'), 'tomlString'
1112 Execute (TOML frontmatter only works if it's the first thing in the file):
1113 let g:vim_markdown_toml_frontmatter=1
1115 AssertNotEqual SyntaxOf('b'), 'tomlString'
1116 unlet g:vim_markdown_toml_frontmatter
1125 Execute (JSON frontmatter is controlled by the option):
1127 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
1128 let g:vim_markdown_json_frontmatter=1
1130 AssertEqual SyntaxOf('a'), 'jsonKeyword'
1131 let g:vim_markdown_json_frontmatter=0
1133 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
1141 Execute (JSON frontmatter only works if it's the first thing in the file):
1142 let g:vim_markdown_json_frontmatter=1
1144 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
1145 unlet g:vim_markdown_json_frontmatter
1156 Execute (header title starts with #):
1157 AssertEqual SyntaxOf('a'), 'htmlH1'
1158 AssertEqual SyntaxOf('b'), 'htmlH2'
1167 # h1 trailing hash #
1173 ## h2 trailing hash ##
1179 ### h3 trailing hash ###
1187 Execute (atx headers):
1188 AssertEqual SyntaxOf(' h1 space'), 'htmlH1'
1189 AssertEqual SyntaxOf('h1 nospace'), 'htmlH1'
1190 AssertEqual SyntaxOf(' h1 2 spaces'), 'htmlH1'
1191 AssertEqual SyntaxOf(' h1 trailing hash '), 'htmlH1'
1192 AssertEqual SyntaxOf(' h2 space'), 'htmlH2'
1193 AssertEqual SyntaxOf('h2 nospace'), 'htmlH2'
1194 AssertEqual SyntaxOf(' h2 trailing hash '), 'htmlH2'
1195 AssertEqual SyntaxOf(' h3 space'), 'htmlH3'
1196 AssertEqual SyntaxOf('h3 nospace'), 'htmlH3'
1197 AssertEqual SyntaxOf(' h3 trailing hash '), 'htmlH3'
1198 AssertEqual SyntaxOf(' h4'), 'htmlH4'
1199 AssertEqual SyntaxOf(' h5'), 'htmlH5'
1200 AssertEqual SyntaxOf(' h6'), 'htmlH6'
1209 Execute (atx headers relative positions):
1210 AssertEqual SyntaxOf(' h1 before h2'), 'htmlH1'
1211 AssertEqual SyntaxOf(' h2 between h1s'), 'htmlH2'
1212 AssertEqual SyntaxOf(' h1 after h2'), 'htmlH1'
1221 setex h1 single punctuation
1224 setex h1 punctuation longer than header
1225 ================================
1227 Execute (setex headers):
1228 AssertEqual SyntaxOf('setex h1'), 'htmlH1'
1229 AssertEqual SyntaxOf('^========$'), 'htmlH1'
1230 AssertEqual SyntaxOf('setex h2'), 'htmlH2'
1231 AssertEqual SyntaxOf('--------'), 'htmlH2'
1232 AssertEqual SyntaxOf('setex h1 single punctuation'), 'htmlH1'
1233 AssertEqual SyntaxOf('^=$'), 'htmlH1'
1234 AssertEqual SyntaxOf('setex h1 punctuation longer than header'), 'htmlH1'
1235 AssertEqual SyntaxOf('^================================$'), 'htmlH1'
1241 Execute (prevent list vs Setex confusion):
1242 AssertNotEqual SyntaxOf('- not Setex'), 'htmlH2'
1243 AssertNotEqual SyntaxOf('- becuase list'), 'htmlH2'
1260 Execute (mixed atx and setex headers):
1261 AssertEqual SyntaxOf('setex h1 before atx'), 'htmlH1'
1262 AssertEqual SyntaxOf('==================='), 'htmlH1'
1263 AssertEqual SyntaxOf(' atx h2'), 'htmlH2'
1264 AssertEqual SyntaxOf(' atx h3'), 'htmlH3'
1265 AssertEqual SyntaxOf(' atx h1'), 'htmlH1'
1266 AssertEqual SyntaxOf('setex h2'), 'htmlH2'
1267 AssertEqual SyntaxOf('------------------'), 'htmlH2'
1275 Execute (& and > are not marked as htmlError in lists):
1276 AssertEqual SyntaxOf('-'), 'mkdListItem'
1277 AssertEqual SyntaxOf('1.'), 'mkdListItem'
1278 AssertNotEqual SyntaxOf('&'), 'htmlError'
1279 AssertNotEqual SyntaxOf('>'), 'htmlError'
1285 Execute (list after line break):
1286 AssertEqual SyntaxOf('1'), 'mkdListItem'
1287 AssertEqual SyntaxOf('2'), 'mkdListItem'
1298 Execute (HTML tag in text):
1299 AssertEqual SyntaxOf('p'), 'htmlTagName'
1300 AssertEqual SyntaxOf('<p>'), 'htmlTag'
1301 AssertEqual SyntaxOf('</p>'), 'htmlEndTag'
1302 AssertEqual SyntaxOf('span'), 'htmlTagName'
1303 AssertEqual SyntaxOf('<span>'), 'htmlTag'
1304 AssertEqual SyntaxOf('</span>'), 'htmlEndTag'
1319 Execute (underscore italic text in atx headings):
1320 AssertEqual SyntaxOf('h1'), 'htmlItalic'
1321 AssertEqual SyntaxOf('h2'), 'htmlItalic'
1322 AssertEqual SyntaxOf('h3'), 'htmlItalic'
1323 AssertEqual SyntaxOf('h4'), 'htmlItalic'
1324 AssertEqual SyntaxOf('h5'), 'htmlItalic'
1325 AssertEqual SyntaxOf('h6'), 'htmlItalic'
1340 Execute (asterisk italic text in atx headings):
1341 AssertEqual SyntaxOf('h1'), 'htmlItalic'
1342 AssertEqual SyntaxOf('h2'), 'htmlItalic'
1343 AssertEqual SyntaxOf('h3'), 'htmlItalic'
1344 AssertEqual SyntaxOf('h4'), 'htmlItalic'
1345 AssertEqual SyntaxOf('h5'), 'htmlItalic'
1346 AssertEqual SyntaxOf('h6'), 'htmlItalic'
1355 Execute (underscore italic text in setext headings):
1356 AssertEqual SyntaxOf('h1'), 'htmlItalic'
1357 AssertEqual SyntaxOf('h2'), 'htmlItalic'
1366 Execute (asterisk italic text in setext headings):
1367 AssertEqual SyntaxOf('h1'), 'htmlItalic'
1368 AssertEqual SyntaxOf('h2'), 'htmlItalic'
1383 Execute (underscore bold text in atx headings):
1384 AssertEqual SyntaxOf('h1'), 'htmlBold'
1385 AssertEqual SyntaxOf('h2'), 'htmlBold'
1386 AssertEqual SyntaxOf('h3'), 'htmlBold'
1387 AssertEqual SyntaxOf('h4'), 'htmlBold'
1388 AssertEqual SyntaxOf('h5'), 'htmlBold'
1389 AssertEqual SyntaxOf('h6'), 'htmlBold'
1404 Execute (asterisk bold text in atx headings):
1405 AssertEqual SyntaxOf('h1'), 'htmlBold'
1406 AssertEqual SyntaxOf('h2'), 'htmlBold'
1407 AssertEqual SyntaxOf('h3'), 'htmlBold'
1408 AssertEqual SyntaxOf('h4'), 'htmlBold'
1409 AssertEqual SyntaxOf('h5'), 'htmlBold'
1410 AssertEqual SyntaxOf('h6'), 'htmlBold'
1419 Execute (underscore bold text in setext headings):
1420 AssertEqual SyntaxOf('h1'), 'htmlBold'
1421 AssertEqual SyntaxOf('h2'), 'htmlBold'
1430 Execute (asterisk bold text in setext headings):
1431 AssertEqual SyntaxOf('h1'), 'htmlBold'
1432 AssertEqual SyntaxOf('h2'), 'htmlBold'
1447 Execute (underscore bold italic text in atx headings):
1448 AssertEqual SyntaxOf('h1'), 'htmlBoldItalic'
1449 AssertEqual SyntaxOf('h2'), 'htmlBoldItalic'
1450 AssertEqual SyntaxOf('h3'), 'htmlBoldItalic'
1451 AssertEqual SyntaxOf('h4'), 'htmlBoldItalic'
1452 AssertEqual SyntaxOf('h5'), 'htmlBoldItalic'
1453 AssertEqual SyntaxOf('h6'), 'htmlBoldItalic'
1468 Execute (asterisk bold italic text in atx headings):
1469 AssertEqual SyntaxOf('h1'), 'htmlBoldItalic'
1470 AssertEqual SyntaxOf('h2'), 'htmlBoldItalic'
1471 AssertEqual SyntaxOf('h3'), 'htmlBoldItalic'
1472 AssertEqual SyntaxOf('h4'), 'htmlBoldItalic'
1473 AssertEqual SyntaxOf('h5'), 'htmlBoldItalic'
1474 AssertEqual SyntaxOf('h6'), 'htmlBoldItalic'
1483 Execute (underscore bold italic text in setext headings):
1484 AssertEqual SyntaxOf('h1'), 'htmlBoldItalic'
1485 AssertEqual SyntaxOf('h2'), 'htmlBoldItalic'
1494 Execute (asterisk bold italic text in setext headings):
1495 AssertEqual SyntaxOf('h1'), 'htmlBoldItalic'
1496 AssertEqual SyntaxOf('h2'), 'htmlBoldItalic'
1511 Execute (footnotes in atx headings):
1512 AssertEqual SyntaxOf('h1'), 'mkdFootnotes'
1513 AssertEqual SyntaxOf('h2'), 'mkdFootnotes'
1514 AssertEqual SyntaxOf('h3'), 'mkdFootnotes'
1515 AssertEqual SyntaxOf('h4'), 'mkdFootnotes'
1516 AssertEqual SyntaxOf('h5'), 'mkdFootnotes'
1517 AssertEqual SyntaxOf('h6'), 'mkdFootnotes'
1526 Execute (footnotes in setext headings):
1527 AssertEqual SyntaxOf('h1'), 'mkdFootnotes'
1528 AssertEqual SyntaxOf('h2'), 'mkdFootnotes'