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
10 AssertNotEqual SyntaxOf('a'), 'htmlBold'
11 AssertEqual SyntaxOf('b'), 'htmlBold'
12 AssertNotEqual SyntaxOf('c'), 'htmlBold'
18 AssertNotEqual SyntaxOf('a'), 'htmlBold'
19 AssertEqual SyntaxOf('b'), 'htmlBold'
20 AssertNotEqual SyntaxOf('c'), 'htmlBold'
26 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
27 AssertEqual SyntaxOf('b'), 'htmlItalic'
28 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
34 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
35 AssertEqual SyntaxOf('b'), 'htmlItalic'
36 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
41 Execute (italic text has underscores):
42 AssertEqual SyntaxOf('a'), 'htmlItalic'
43 AssertEqual SyntaxOf('b'), 'htmlItalic'
48 Execute (not italic with escaped asterisks):
49 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
50 AssertNotEqual SyntaxOf('b'), 'htmlItalic'
51 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
56 Execute (not italic with escaped underscores):
57 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
58 AssertNotEqual SyntaxOf('b'), 'htmlItalic'
59 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
64 Execute (italic with escaped underscores):
65 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
66 AssertEqual SyntaxOf('b'), 'htmlItalic'
67 AssertEqual SyntaxOf('c'), 'htmlItalic'
68 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
73 Execute (not italic underscores within text):
74 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
75 AssertNotEqual SyntaxOf('b'), 'htmlItalic'
76 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
81 Execute (italic with escaped asterisks):
82 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
83 AssertEqual SyntaxOf('b'), 'htmlItalic'
84 AssertEqual SyntaxOf('c'), 'htmlItalic'
85 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
90 Execute (bold with escaped underscores):
91 AssertNotEqual SyntaxOf('a'), 'htmlBold'
92 AssertEqual SyntaxOf('b'), 'htmlBold'
93 AssertEqual SyntaxOf('c'), 'htmlBold'
94 AssertNotEqual SyntaxOf('d'), 'htmlBold'
100 Execute (italic with underscores in multiple lines):
101 AssertEqual SyntaxOf('a'), 'htmlItalic'
102 AssertEqual SyntaxOf('b'), 'htmlItalic'
103 AssertEqual SyntaxOf('c'), 'htmlItalic'
104 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
110 Execute (bold with underscores in multiple lines):
111 AssertEqual SyntaxOf('a'), 'htmlBold'
112 AssertEqual SyntaxOf('b'), 'htmlBold'
113 AssertEqual SyntaxOf('c'), 'htmlBold'
114 AssertNotEqual SyntaxOf('d'), 'htmlBold'
120 Execute (bold italic with underscores in multiple lines):
121 AssertEqual SyntaxOf('a'), 'htmlBoldItalic'
122 AssertEqual SyntaxOf('b'), 'htmlBoldItalic'
123 AssertEqual SyntaxOf('c'), 'htmlBoldItalic'
124 AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'
130 Execute (italic with asterisks in multiple lines):
131 AssertEqual SyntaxOf('a'), 'htmlItalic'
132 AssertEqual SyntaxOf('b'), 'htmlItalic'
133 AssertEqual SyntaxOf('c'), 'htmlItalic'
134 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
140 Execute (bold with asterisks in multiple lines):
141 AssertEqual SyntaxOf('a'), 'htmlBold'
142 AssertEqual SyntaxOf('b'), 'htmlBold'
143 AssertEqual SyntaxOf('c'), 'htmlBold'
144 AssertNotEqual SyntaxOf('d'), 'htmlBold'
150 Execute (bold italic with asterisks in multiple lines):
151 AssertEqual SyntaxOf('a'), 'htmlBoldItalic'
152 AssertEqual SyntaxOf('b'), 'htmlBoldItalic'
153 AssertEqual SyntaxOf('c'), 'htmlBoldItalic'
154 AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'
159 Execute (not italic with an asterisk):
160 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
165 Execute (not bold with double underscores):
166 AssertNotEqual SyntaxOf('_'), 'htmlBold'
167 AssertNotEqual SyntaxOf('a'), 'htmlBold'
168 AssertNotEqual SyntaxOf('b'), 'htmlBold'
173 Execute (conceal italic):
175 setlocal conceallevel=2
176 AssertEqual synconcealed(1, 1)[0], 1
177 AssertEqual synconcealed(1, 2)[0], 0
178 AssertEqual synconcealed(1, 3)[0], 1
179 setlocal conceallevel=0
182 Execute (disable conceal):
184 let g:vim_markdown_conceal=0
186 setlocal conceallevel=2
187 AssertEqual synconcealed(1, 1)[0], 0
188 AssertEqual synconcealed(1, 2)[0], 0
189 AssertEqual synconcealed(1, 3)[0], 0
191 let g:vim_markdown_conceal=1
193 AssertEqual synconcealed(1, 1)[0], 1
194 AssertEqual synconcealed(1, 2)[0], 0
195 AssertEqual synconcealed(1, 3)[0], 1
197 setlocal conceallevel=0
198 unlet g:vim_markdown_conceal
205 Execute (conceal italic):
207 setlocal conceallevel=2
208 AssertEqual synconcealed(1, 1)[0], 1
209 AssertEqual synconcealed(1, 2)[0], 0
210 AssertEqual synconcealed(1, 3)[0], 1
211 setlocal conceallevel=0
214 Execute (disable conceal):
216 let g:vim_markdown_conceal=0
218 setlocal conceallevel=2
219 AssertEqual synconcealed(1, 1)[0], 0
220 AssertEqual synconcealed(1, 2)[0], 0
221 AssertEqual synconcealed(1, 3)[0], 0
223 let g:vim_markdown_conceal=1
225 AssertEqual synconcealed(1, 1)[0], 1
226 AssertEqual synconcealed(1, 2)[0], 0
227 AssertEqual synconcealed(1, 3)[0], 1
229 setlocal conceallevel=0
230 unlet g:vim_markdown_conceal
237 Execute (conceal bold):
239 setlocal conceallevel=2
240 AssertEqual synconcealed(1, 1)[0], 1
241 AssertEqual synconcealed(1, 2)[0], 1
242 AssertEqual synconcealed(1, 3)[0], 0
243 AssertEqual synconcealed(1, 4)[0], 1
244 AssertEqual synconcealed(1, 5)[0], 1
245 setlocal conceallevel=0
248 Execute (disable conceal):
250 let g:vim_markdown_conceal=0
252 setlocal conceallevel=2
253 AssertEqual synconcealed(1, 1)[0], 0
254 AssertEqual synconcealed(1, 2)[0], 0
255 AssertEqual synconcealed(1, 3)[0], 0
256 AssertEqual synconcealed(1, 4)[0], 0
257 AssertEqual synconcealed(1, 5)[0], 0
259 let g:vim_markdown_conceal=1
261 AssertEqual synconcealed(1, 1)[0], 1
262 AssertEqual synconcealed(1, 2)[0], 1
263 AssertEqual synconcealed(1, 3)[0], 0
264 AssertEqual synconcealed(1, 4)[0], 1
265 AssertEqual synconcealed(1, 5)[0], 1
267 setlocal conceallevel=0
268 unlet g:vim_markdown_conceal
275 Execute (conceal bold):
277 setlocal conceallevel=2
278 AssertEqual synconcealed(1, 1)[0], 1
279 AssertEqual synconcealed(1, 2)[0], 1
280 AssertEqual synconcealed(1, 3)[0], 0
281 AssertEqual synconcealed(1, 4)[0], 1
282 AssertEqual synconcealed(1, 5)[0], 1
283 setlocal conceallevel=0
286 Execute (disable conceal):
288 let g:vim_markdown_conceal=0
290 setlocal conceallevel=2
291 AssertEqual synconcealed(1, 1)[0], 0
292 AssertEqual synconcealed(1, 2)[0], 0
293 AssertEqual synconcealed(1, 3)[0], 0
294 AssertEqual synconcealed(1, 4)[0], 0
295 AssertEqual synconcealed(1, 5)[0], 0
297 let g:vim_markdown_conceal=1
299 AssertEqual synconcealed(1, 1)[0], 1
300 AssertEqual synconcealed(1, 2)[0], 1
301 AssertEqual synconcealed(1, 3)[0], 0
302 AssertEqual synconcealed(1, 4)[0], 1
303 AssertEqual synconcealed(1, 5)[0], 1
305 setlocal conceallevel=0
306 unlet g:vim_markdown_conceal
313 Execute (conceal italic bold):
315 setlocal conceallevel=2
316 AssertEqual synconcealed(1, 1)[0], 1
317 AssertEqual synconcealed(1, 2)[0], 1
318 AssertEqual synconcealed(1, 3)[0], 1
319 AssertEqual synconcealed(1, 4)[0], 0
320 AssertEqual synconcealed(1, 5)[0], 1
321 AssertEqual synconcealed(1, 6)[0], 1
322 AssertEqual synconcealed(1, 7)[0], 1
323 setlocal conceallevel=0
326 Execute (disable conceal):
328 let g:vim_markdown_conceal=0
330 setlocal conceallevel=2
331 AssertEqual synconcealed(1, 1)[0], 0
332 AssertEqual synconcealed(1, 2)[0], 0
333 AssertEqual synconcealed(1, 3)[0], 0
334 AssertEqual synconcealed(1, 4)[0], 0
335 AssertEqual synconcealed(1, 5)[0], 0
336 AssertEqual synconcealed(1, 6)[0], 0
337 AssertEqual synconcealed(1, 7)[0], 0
339 let g:vim_markdown_conceal=1
341 AssertEqual synconcealed(1, 1)[0], 1
342 AssertEqual synconcealed(1, 2)[0], 1
343 AssertEqual synconcealed(1, 3)[0], 1
344 AssertEqual synconcealed(1, 4)[0], 0
345 AssertEqual synconcealed(1, 5)[0], 1
346 AssertEqual synconcealed(1, 6)[0], 1
347 AssertEqual synconcealed(1, 7)[0], 1
349 setlocal conceallevel=0
350 unlet g:vim_markdown_conceal
357 Execute (conceal italic bold):
359 setlocal conceallevel=2
360 AssertEqual synconcealed(1, 1)[0], 1
361 AssertEqual synconcealed(1, 2)[0], 1
362 AssertEqual synconcealed(1, 3)[0], 1
363 AssertEqual synconcealed(1, 4)[0], 0
364 AssertEqual synconcealed(1, 5)[0], 1
365 AssertEqual synconcealed(1, 6)[0], 1
366 AssertEqual synconcealed(1, 7)[0], 1
367 setlocal conceallevel=0
370 Execute (disable conceal):
372 let g:vim_markdown_conceal=0
374 setlocal conceallevel=2
375 AssertEqual synconcealed(1, 1)[0], 0
376 AssertEqual synconcealed(1, 2)[0], 0
377 AssertEqual synconcealed(1, 3)[0], 0
378 AssertEqual synconcealed(1, 4)[0], 0
379 AssertEqual synconcealed(1, 5)[0], 0
380 AssertEqual synconcealed(1, 6)[0], 0
381 AssertEqual synconcealed(1, 7)[0], 0
383 let g:vim_markdown_conceal=1
385 AssertEqual synconcealed(1, 1)[0], 1
386 AssertEqual synconcealed(1, 2)[0], 1
387 AssertEqual synconcealed(1, 3)[0], 1
388 AssertEqual synconcealed(1, 4)[0], 0
389 AssertEqual synconcealed(1, 5)[0], 1
390 AssertEqual synconcealed(1, 6)[0], 1
391 AssertEqual synconcealed(1, 7)[0], 1
393 setlocal conceallevel=0
394 unlet g:vim_markdown_conceal
403 Execute (link with title):
404 AssertEqual SyntaxOf('a'), 'mkdLink'
405 AssertEqual SyntaxOf('b'), 'mkdURL'
411 Execute (link text with newline):
412 AssertEqual SyntaxOf('a'), 'mkdLink'
413 AssertEqual SyntaxOf('b'), 'mkdLink'
414 AssertEqual SyntaxOf('c'), 'mkdURL'
419 Execute (link text with newline):
420 AssertNotEqual SyntaxOf('a'), 'mkdLink'
421 AssertNotEqual SyntaxOf('b'), 'mkdLink'
422 AssertEqual SyntaxOf('c'), 'mkdLink'
423 AssertEqual SyntaxOf('d'), 'mkdURL'
430 Execute (parenthesis not in link):
431 AssertNotEqual SyntaxOf('a'), 'mkdURL'
432 AssertNotEqual SyntaxOf('b'), 'mkdURL'
437 Execute (multiple links on a line):
438 AssertNotEqual SyntaxOf('c'), 'mkdLink'
439 AssertNotEqual SyntaxOf('c'), 'mkdURL'
444 Execute (space is not allowed between link text and parenthesis):
445 AssertNotEqual SyntaxOf('a'), 'mkdLink'
446 AssertNotEqual SyntaxOf('b'), 'mkdURL'
451 Execute (conceal link):
453 setlocal conceallevel=2
454 AssertEqual synconcealed(1, 1)[0], 1
455 AssertEqual synconcealed(1, 2)[0], 0
456 AssertEqual synconcealed(1, 3)[0], 1
457 AssertEqual synconcealed(1, 4)[0], 1
458 AssertEqual synconcealed(1, 4)[0], 1
459 AssertEqual synconcealed(1, 5)[0], 1
460 AssertEqual synconcealed(1, 6)[0], 1
461 setlocal conceallevel=0
464 Execute (disable conceal):
466 let g:vim_markdown_conceal=0
468 setlocal conceallevel=2
469 AssertEqual synconcealed(1, 1)[0], 0
470 AssertEqual synconcealed(1, 2)[0], 0
471 AssertEqual synconcealed(1, 3)[0], 0
472 AssertEqual synconcealed(1, 4)[0], 0
473 AssertEqual synconcealed(1, 4)[0], 0
474 AssertEqual synconcealed(1, 5)[0], 0
475 AssertEqual synconcealed(1, 6)[0], 0
477 let g:vim_markdown_conceal=1
479 AssertEqual synconcealed(1, 1)[0], 1
480 AssertEqual synconcealed(1, 2)[0], 0
481 AssertEqual synconcealed(1, 3)[0], 1
482 AssertEqual synconcealed(1, 4)[0], 1
483 AssertEqual synconcealed(1, 4)[0], 1
484 AssertEqual synconcealed(1, 5)[0], 1
485 AssertEqual synconcealed(1, 6)[0], 1
487 setlocal conceallevel=0
488 unlet g:vim_markdown_conceal
498 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
499 AssertEqual SyntaxOf('<'), 'mkdDelimiter'
500 AssertEqual SyntaxOf('b'), 'mkdInlineURL'
501 AssertEqual SyntaxOf('>'), 'mkdDelimiter'
502 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
507 Execute (autolink with domain starting with a number):
508 AssertEqual SyntaxOf('12monkeys'), 'mkdInlineURL'
513 Execute (autolink with scheme case is insensitive):
514 AssertEqual SyntaxOf('a'), 'mkdInlineURL'
519 Execute (autolink without scheme is not a link):
520 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
528 Execute (autolink with space is not a link):
529 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
530 AssertNotEqual SyntaxOf('b'), 'mkdInlineURL'
531 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
532 AssertNotEqual SyntaxOf('d'), 'mkdInlineURL'
533 AssertNotEqual SyntaxOf('e'), 'mkdInlineURL'
538 Execute (autolinks can be backslash escaped):
539 AssertNotEqual SyntaxOf('<'), 'mkdDelimiter'
544 Execute (autolink in parenthesis):
545 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
546 AssertEqual SyntaxOf('('), 'mkdDelimiter'
547 AssertEqual SyntaxOf('b'), 'mkdInlineURL'
548 AssertEqual SyntaxOf(')'), 'mkdDelimiter'
549 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
552 [![a](http://b)](http://c)
554 Execute (autolink in link text):
555 AssertEqual SyntaxOf('!'), 'mkdDelimiter'
556 AssertEqual SyntaxOf('a'), 'mkdLink'
557 AssertEqual SyntaxOf('b'), 'mkdURL'
558 AssertEqual SyntaxOf('c'), 'mkdURL'
579 Execute (link in headers):
580 AssertEqual SyntaxOf('h1link'), 'mkdLink'
581 AssertEqual SyntaxOf('h2link'), 'mkdLink'
582 AssertEqual SyntaxOf('h3link'), 'mkdLink'
583 AssertEqual SyntaxOf('h4link'), 'mkdLink'
584 AssertEqual SyntaxOf('h5link'), 'mkdLink'
585 AssertEqual SyntaxOf('h6link'), 'mkdLink'
586 AssertEqual SyntaxOf('h1link_b'), 'mkdLink'
587 AssertEqual SyntaxOf('h2link_b'), 'mkdLink'
594 ### http://h3link.foo
596 #### http://h4link.foo
598 ##### http://h5link.foo
600 ###### http://h6link.foo
608 Execute (inline url in headers):
609 AssertEqual SyntaxOf('h1link'), 'mkdInlineURL'
610 AssertEqual SyntaxOf('h2link'), 'mkdInlineURL'
611 AssertEqual SyntaxOf('h3link'), 'mkdInlineURL'
612 AssertEqual SyntaxOf('h4link'), 'mkdInlineURL'
613 AssertEqual SyntaxOf('h5link'), 'mkdInlineURL'
614 AssertEqual SyntaxOf('h6link'), 'mkdInlineURL'
615 AssertEqual SyntaxOf('h1link_b'), 'mkdInlineURL'
616 AssertEqual SyntaxOf('h2link_b'), 'mkdInlineURL'
622 Execute (link in blockquote):
623 AssertEqual SyntaxOf('a'), 'mkdLink'
624 AssertEqual SyntaxOf('foo'), 'mkdInlineURL'
633 Execute (code blocks can be fenced with tildes):
634 AssertEqual SyntaxOf('c'), 'mkdCode'
641 Execute (code blocks can be fenced with tildes longer than 3):
642 AssertEqual SyntaxOf('c'), 'mkdCode'
649 Execute (code blocks can be fenced with backticks longer than 3):
650 AssertEqual SyntaxOf('c'), 'mkdCode'
657 Execute (code blocks can have a language specifier):
658 AssertEqual SyntaxOf('c'), 'mkdCode'
667 Execute (code blocks can be fenced with backticks and a language specifier):
668 AssertEqual SyntaxOf('code'), 'mkdCode'
669 AssertNotEqual SyntaxOf('text'), 'mkdCode'
679 Execute (indent code blocks):
680 AssertNotEqual SyntaxOf('a'), 'mkdCode'
681 AssertEqual SyntaxOf('b'), 'mkdCode'
682 AssertEqual SyntaxOf('c'), 'mkdCode'
691 Execute (indent code blocks after header):
692 AssertNotEqual SyntaxOf('a'), 'mkdCode'
693 AssertNotEqual SyntaxOf('b'), 'mkdCode'
694 AssertEqual SyntaxOf('c'), 'mkdCode'
703 Execute (indent code blocks after list):
704 AssertNotEqual SyntaxOf('a'), 'mkdCode'
705 AssertNotEqual SyntaxOf('b'), 'mkdCode'
706 AssertEqual SyntaxOf('c'), 'mkdCode'
712 Execute (indent code block at beginning of file):
713 AssertEqual SyntaxOf('a'), 'mkdCode'
714 AssertEqual SyntaxOf('b'), 'mkdCode'
727 Execute (fenced code block syntax with a language specifier):
728 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
730 AssertEqual SyntaxOf('include'), 'cInclude'
731 AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
732 AssertEqual SyntaxOf('def'), 'rubyDefine'
755 Execute (fenced code block syntax with a language specifier after whitespace):
756 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
758 AssertEqual SyntaxOf('include'), 'cInclude'
759 AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
760 AssertEqual SyntaxOf('g:a'), 'vimVar'
761 AssertEqual SyntaxOf('def'), 'rubyDefine'
762 AssertNotEqual SyntaxOf('class'), 'rubyClass'
773 Execute (fenced code block syntax with alias language specifier):
774 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
776 AssertEqual SyntaxOf('g:a'), 'vimVar'
777 AssertEqual SyntaxOf('g:b'), 'vimVar'
784 Execute (fenced code block languages setting):
785 let g:vim_markdown_fenced_languages = ['csharp=cs']
786 source ../ftplugin/markdown.vim
787 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
789 AssertEqual SyntaxOf('foo'), 'csString'
790 unlet g:vim_markdown_fenced_languages
797 Execute (fenced code block includes language syntax with reopening same buffer):
798 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
803 set filetype=markdown
804 execute "normal! i```vim\<cr>let g:a = 1\<cr>```"
806 AssertEqual SyntaxOf('g:a'), 'vimVar'
813 Execute (fenced code block syntax with an unknown language specifier):
814 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
816 AssertEqual SyntaxOf('code'), 'mkdSnippetA_B_'
825 Execute (first = or - in fenced code block is not setex headers):
826 AssertEqual SyntaxOf('='), 'mkdCode'
827 AssertEqual SyntaxOf('-'), 'mkdCode'
834 Execute (fenced code block with extended info strings):
835 AssertEqual SyntaxOf('a'), 'mkdCode'
837 # Code Blocks in pre and code tag
844 Execute (code block in pre tag):
845 AssertEqual SyntaxOf('a'), 'mkdCode'
852 Execute (code block in code tag):
853 AssertEqual SyntaxOf('a'), 'mkdCode'
860 Execute (not code block in escaped pre tag):
861 AssertNotEqual SyntaxOf('a'), 'mkdCode'
868 Execute (not code block in escaped code tag):
869 AssertNotEqual SyntaxOf('a'), 'mkdCode'
880 AssertNotEqual SyntaxOf('x')[0:2], 'tex'
881 AssertNotEqual SyntaxOf('y')[0:2], 'tex'
882 let g:vim_markdown_math=1
884 AssertNotEqual SyntaxOf('a')[0:2], 'tex'
885 AssertNotEqual SyntaxOf('b')[0:2], 'tex'
886 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
887 AssertNotEqual SyntaxOf('d')[0:2], 'tex'
888 AssertNotEqual SyntaxOf('e')[0:2], 'tex'
889 AssertNotEqual SyntaxOf('f')[0:2], 'tex'
890 AssertEqual SyntaxOf('x')[0:2], 'tex'
891 AssertEqual SyntaxOf('y')[0:2], 'tex'
892 let g:vim_markdown_math=0
894 AssertNotEqual SyntaxOf('x')[0:2], 'tex'
895 AssertNotEqual SyntaxOf('y')[0:2], 'tex'
906 Execute (multiline math):
907 let g:vim_markdown_math=1
909 AssertNotEqual SyntaxOf('a')[0:2], 'tex'
910 AssertEqual SyntaxOf('b')[0:2], 'tex'
911 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
917 Execute (math tex highlighting):
918 let g:vim_markdown_math=0
920 AssertNotEqual SyntaxOf('sqrt'), 'texStatement'
921 AssertNotEqual SyntaxOf('frac'), 'texStatement'
922 let g:vim_markdown_math=1
924 AssertEqual SyntaxOf('sqrt'), 'texStatement'
925 AssertEqual SyntaxOf('frac'), 'texStatement'
930 Execute (math ends with $):
931 let g:vim_markdown_math=1
933 AssertEqual SyntaxOf('a')[0:2], 'tex'
934 AssertEqual SyntaxOf('b')[0:2], 'tex'
935 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
940 Execute (math ends with $$):
941 let g:vim_markdown_math=1
943 AssertEqual SyntaxOf('a')[0:2], 'tex'
944 AssertEqual SyntaxOf('b')[0:2], 'tex'
945 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
950 Execute (math conceal in $):
952 setlocal conceallevel=2
953 let g:vim_markdown_math=1
955 AssertEqual synconcealed(1, 1)[0], 1, '$'
956 AssertEqual synconcealed(1, 2)[0], 0
957 AssertEqual synconcealed(1, 3)[0], 0
958 AssertEqual synconcealed(1, 4)[0], 0
959 AssertEqual synconcealed(1, 5)[0], 1, '\le'
960 AssertEqual synconcealed(1, 6)[0], 1
961 AssertEqual synconcealed(1, 7)[0], 1
962 AssertEqual synconcealed(1, 8)[0], 0
963 AssertEqual synconcealed(1, 9)[0], 0
964 AssertEqual synconcealed(1, 10)[0], 0
965 AssertEqual synconcealed(1, 11)[0], 1, '$'
966 setlocal conceallevel=0
975 Execute (math conceal in $$):
977 setlocal conceallevel=2
978 let g:vim_markdown_math=1
980 AssertEqual synconcealed(1, 1)[0], 1, '$$'
981 AssertEqual synconcealed(2, 1)[0], 1, '\omega'
982 AssertEqual synconcealed(3, 1)[0], 0, '0'
983 AssertEqual synconcealed(3, 3)[0], 1, '\le'
984 AssertEqual synconcealed(3, 7)[0], 0, '1'
985 AssertEqual synconcealed(4, 1)[0], 1, '$$'
986 setlocal conceallevel=0
996 Execute (YAML frontmatter is controlled by the option):
997 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
998 let g:vim_markdown_frontmatter=1
1000 AssertEqual SyntaxOf('a')[0:3], 'yaml'
1001 let g:vim_markdown_frontmatter=0
1003 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
1011 Execute (YAML frontmatter only works if it's the first thing in the file):
1012 let g:vim_markdown_frontmatter=1
1014 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
1023 Execute (rules are not mistaken by YAML frontmatter delimiters):
1024 let g:vim_markdown_frontmatter=1
1026 AssertEqual SyntaxAt(5, 1), 'mkdRule'
1027 unlet g:vim_markdown_frontmatter
1036 Execute (TOML frontmatter is controlled by the option):
1038 AssertNotEqual SyntaxOf('b'), 'tomlString'
1039 let g:vim_markdown_toml_frontmatter=1
1041 AssertEqual SyntaxOf('b'), 'tomlString'
1042 let g:vim_markdown_toml_frontmatter=0
1044 AssertNotEqual SyntaxOf('b'), 'tomlString'
1052 Execute (TOML frontmatter only works if it's the first thing in the file):
1053 let g:vim_markdown_toml_frontmatter=1
1055 AssertNotEqual SyntaxOf('b'), 'tomlString'
1056 unlet g:vim_markdown_toml_frontmatter
1065 Execute (JSON frontmatter is controlled by the option):
1067 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
1068 let g:vim_markdown_json_frontmatter=1
1070 AssertEqual SyntaxOf('a'), 'jsonKeyword'
1071 let g:vim_markdown_json_frontmatter=0
1073 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
1081 Execute (JSON frontmatter only works if it's the first thing in the file):
1082 let g:vim_markdown_json_frontmatter=1
1084 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
1085 unlet g:vim_markdown_json_frontmatter
1096 Execute (header title starts with #):
1097 AssertEqual SyntaxOf('a'), 'htmlH1'
1098 AssertEqual SyntaxOf('b'), 'htmlH2'
1107 # h1 trailing hash #
1113 ## h2 trailing hash ##
1119 ### h3 trailing hash ###
1127 Execute (atx headers):
1128 AssertEqual SyntaxOf('# h1 space'), 'htmlH1'
1129 AssertEqual SyntaxOf('#h1 nospace'), 'htmlH1'
1130 AssertEqual SyntaxOf('# h1 2 spaces'), 'htmlH1'
1131 AssertEqual SyntaxOf('# h1 trailing hash #'), 'htmlH1'
1132 AssertEqual SyntaxOf('## h2 space'), 'htmlH2'
1133 AssertEqual SyntaxOf('##h2 nospace'), 'htmlH2'
1134 AssertEqual SyntaxOf('## h2 trailing hash ##'), 'htmlH2'
1135 AssertEqual SyntaxOf('### h3 space'), 'htmlH3'
1136 AssertEqual SyntaxOf('###h3 nospace'), 'htmlH3'
1137 AssertEqual SyntaxOf('### h3 trailing hash ###'), 'htmlH3'
1138 AssertEqual SyntaxOf('#### h4'), 'htmlH4'
1139 AssertEqual SyntaxOf('##### h5'), 'htmlH5'
1140 AssertEqual SyntaxOf('###### h6'), 'htmlH6'
1149 Execute (atx headers relative positions):
1150 AssertEqual SyntaxOf('# h1 before h2'), 'htmlH1'
1151 AssertEqual SyntaxOf('## h2 between h1s'), 'htmlH2'
1152 AssertEqual SyntaxOf('# h1 after h2'), 'htmlH1'
1161 setex h1 single punctuation
1164 setex h1 punctuation longer than header
1165 ================================
1167 Execute (setex headers):
1168 AssertEqual SyntaxOf('setex h1'), 'htmlH1'
1169 AssertEqual SyntaxOf('^========$'), 'htmlH1'
1170 AssertEqual SyntaxOf('setex h2'), 'htmlH2'
1171 AssertEqual SyntaxOf('--------'), 'htmlH2'
1172 AssertEqual SyntaxOf('setex h1 single punctuation'), 'htmlH1'
1173 AssertEqual SyntaxOf('^=$'), 'htmlH1'
1174 AssertEqual SyntaxOf('setex h1 punctuation longer than header'), 'htmlH1'
1175 AssertEqual SyntaxOf('^================================$'), 'htmlH1'
1181 Execute (prevent list vs Setex confusion):
1182 AssertNotEqual SyntaxOf('- not Setex'), 'htmlH2'
1183 AssertNotEqual SyntaxOf('- becuase list'), 'htmlH2'
1200 Execute (mixed atx and setex headers):
1201 AssertEqual SyntaxOf('setex h1 before atx'), 'htmlH1'
1202 AssertEqual SyntaxOf('==================='), 'htmlH1'
1203 AssertEqual SyntaxOf('## atx h2'), 'htmlH2'
1204 AssertEqual SyntaxOf('### atx h3'), 'htmlH3'
1205 AssertEqual SyntaxOf('# atx h1'), 'htmlH1'
1206 AssertEqual SyntaxOf('setex h2'), 'htmlH2'
1207 AssertEqual SyntaxOf('------------------'), 'htmlH2'
1215 Execute (& and > are not marked as htmlError in lists):
1216 AssertEqual SyntaxOf('-'), 'mkdListItem'
1217 AssertEqual SyntaxOf('1.'), 'mkdListItem'
1218 AssertNotEqual SyntaxOf('&'), 'htmlError'
1219 AssertNotEqual SyntaxOf('>'), 'htmlError'
1225 Execute (list after line break):
1226 AssertEqual SyntaxOf('1'), 'mkdListItem'
1227 AssertEqual SyntaxOf('2'), 'mkdListItem'
1238 Execute (HTML tag in text):
1239 AssertEqual SyntaxOf('p'), 'htmlTagName'
1240 AssertEqual SyntaxOf('<p>'), 'htmlTag'
1241 AssertEqual SyntaxOf('</p>'), 'htmlEndTag'
1242 AssertEqual SyntaxOf('span'), 'htmlTagName'
1243 AssertEqual SyntaxOf('<span>'), 'htmlTag'
1244 AssertEqual SyntaxOf('</span>'), 'htmlEndTag'