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 bracket sections):
420 AssertNotEqual SyntaxOf('a'), 'mkdLink'
421 AssertNotEqual SyntaxOf('b'), 'mkdLink'
422 AssertEqual SyntaxOf('c'), 'mkdLink'
423 AssertEqual SyntaxOf('d'), 'mkdURL'
428 Execute (footnote is not link):
429 AssertNotEqual SyntaxOf('a'), 'mkdLinkDef'
436 Execute (parenthesis not in link):
437 AssertNotEqual SyntaxOf('a'), 'mkdURL'
438 AssertNotEqual SyntaxOf('b'), 'mkdURL'
443 Execute (multiple links on a line):
444 AssertNotEqual SyntaxOf('c'), 'mkdLink'
445 AssertNotEqual SyntaxOf('c'), 'mkdURL'
450 Execute (space is not allowed between link text and parenthesis):
451 AssertNotEqual SyntaxOf('a'), 'mkdLink'
452 AssertNotEqual SyntaxOf('b'), 'mkdURL'
457 Execute (conceal link):
459 setlocal conceallevel=2
460 AssertEqual synconcealed(1, 1)[0], 1
461 AssertEqual synconcealed(1, 2)[0], 0
462 AssertEqual synconcealed(1, 3)[0], 1
463 AssertEqual synconcealed(1, 4)[0], 1
464 AssertEqual synconcealed(1, 4)[0], 1
465 AssertEqual synconcealed(1, 5)[0], 1
466 AssertEqual synconcealed(1, 6)[0], 1
467 setlocal conceallevel=0
470 Execute (disable conceal):
472 let g:vim_markdown_conceal=0
474 setlocal conceallevel=2
475 AssertEqual synconcealed(1, 1)[0], 0
476 AssertEqual synconcealed(1, 2)[0], 0
477 AssertEqual synconcealed(1, 3)[0], 0
478 AssertEqual synconcealed(1, 4)[0], 0
479 AssertEqual synconcealed(1, 4)[0], 0
480 AssertEqual synconcealed(1, 5)[0], 0
481 AssertEqual synconcealed(1, 6)[0], 0
483 let g:vim_markdown_conceal=1
485 AssertEqual synconcealed(1, 1)[0], 1
486 AssertEqual synconcealed(1, 2)[0], 0
487 AssertEqual synconcealed(1, 3)[0], 1
488 AssertEqual synconcealed(1, 4)[0], 1
489 AssertEqual synconcealed(1, 4)[0], 1
490 AssertEqual synconcealed(1, 5)[0], 1
491 AssertEqual synconcealed(1, 6)[0], 1
493 setlocal conceallevel=0
494 unlet g:vim_markdown_conceal
504 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
505 AssertEqual SyntaxOf('<'), 'mkdDelimiter'
506 AssertEqual SyntaxOf('b'), 'mkdInlineURL'
507 AssertEqual SyntaxOf('>'), 'mkdDelimiter'
508 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
513 Execute (autolink with domain starting with a number):
514 AssertEqual SyntaxOf('12monkeys'), 'mkdInlineURL'
519 Execute (autolink with scheme case is insensitive):
520 AssertEqual SyntaxOf('a'), 'mkdInlineURL'
525 Execute (autolink without scheme is not a link):
526 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
534 Execute (autolink with space is not a link):
535 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
536 AssertNotEqual SyntaxOf('b'), 'mkdInlineURL'
537 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
538 AssertNotEqual SyntaxOf('d'), 'mkdInlineURL'
539 AssertNotEqual SyntaxOf('e'), 'mkdInlineURL'
544 Execute (autolinks can be backslash escaped):
545 AssertNotEqual SyntaxOf('<'), 'mkdDelimiter'
550 Execute (autolink in parenthesis):
551 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
552 AssertEqual SyntaxOf('('), 'mkdDelimiter'
553 AssertEqual SyntaxOf('b'), 'mkdInlineURL'
554 AssertEqual SyntaxOf(')'), 'mkdDelimiter'
555 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
558 [![a](http://b)](http://c)
560 Execute (autolink in link text):
561 AssertEqual SyntaxOf('!'), 'mkdDelimiter'
562 AssertEqual SyntaxOf('a'), 'mkdLink'
563 AssertEqual SyntaxOf('b'), 'mkdURL'
564 AssertEqual SyntaxOf('c'), 'mkdURL'
585 Execute (link in headers):
586 AssertEqual SyntaxOf('h1link'), 'mkdLink'
587 AssertEqual SyntaxOf('h2link'), 'mkdLink'
588 AssertEqual SyntaxOf('h3link'), 'mkdLink'
589 AssertEqual SyntaxOf('h4link'), 'mkdLink'
590 AssertEqual SyntaxOf('h5link'), 'mkdLink'
591 AssertEqual SyntaxOf('h6link'), 'mkdLink'
592 AssertEqual SyntaxOf('h1link_b'), 'mkdLink'
593 AssertEqual SyntaxOf('h2link_b'), 'mkdLink'
600 ### http://h3link.foo
602 #### http://h4link.foo
604 ##### http://h5link.foo
606 ###### http://h6link.foo
614 Execute (inline url in headers):
615 AssertEqual SyntaxOf('h1link'), 'mkdInlineURL'
616 AssertEqual SyntaxOf('h2link'), 'mkdInlineURL'
617 AssertEqual SyntaxOf('h3link'), 'mkdInlineURL'
618 AssertEqual SyntaxOf('h4link'), 'mkdInlineURL'
619 AssertEqual SyntaxOf('h5link'), 'mkdInlineURL'
620 AssertEqual SyntaxOf('h6link'), 'mkdInlineURL'
621 AssertEqual SyntaxOf('h1link_b'), 'mkdInlineURL'
622 AssertEqual SyntaxOf('h2link_b'), 'mkdInlineURL'
628 Execute (link in blockquote):
629 AssertEqual SyntaxOf('a'), 'mkdLink'
630 AssertEqual SyntaxOf('foo'), 'mkdInlineURL'
633 [https://domain.tld](https://domain.com) not_a_link
635 Execute (link with url title):
636 AssertEqual SyntaxOf('https://domain.tld'), 'mkdInlineURL'
637 AssertEqual SyntaxOf('https://domain.com'), 'mkdInlineURL'
638 AssertNotEqual SyntaxOf('not_a_link'), 'mkdInlineURL'
647 Execute (code blocks can be fenced with tildes):
648 AssertEqual SyntaxOf('c'), 'mkdCode'
655 Execute (code blocks can be fenced with tildes longer than 3):
656 AssertEqual SyntaxOf('c'), 'mkdCode'
663 Execute (code blocks can be fenced with backticks longer than 3):
664 AssertEqual SyntaxOf('c'), 'mkdCode'
671 Execute (code blocks can have a language specifier):
672 AssertEqual SyntaxOf('c'), 'mkdCode'
681 Execute (code blocks can be fenced with backticks and a language specifier):
682 AssertEqual SyntaxOf('code'), 'mkdCode'
683 AssertNotEqual SyntaxOf('text'), 'mkdCode'
693 Execute (indent code blocks):
694 AssertNotEqual SyntaxOf('a'), 'mkdCode'
695 AssertEqual SyntaxOf('b'), 'mkdCode'
696 AssertEqual SyntaxOf('c'), 'mkdCode'
705 Execute (indent code blocks after header):
706 AssertNotEqual SyntaxOf('a'), 'mkdCode'
707 AssertNotEqual SyntaxOf('b'), 'mkdCode'
708 AssertEqual SyntaxOf('c'), 'mkdCode'
717 Execute (indent code blocks after list):
718 AssertNotEqual SyntaxOf('a'), 'mkdCode'
719 AssertNotEqual SyntaxOf('b'), 'mkdCode'
720 AssertEqual SyntaxOf('c'), 'mkdCode'
726 Execute (indent code block at beginning of file):
727 AssertEqual SyntaxOf('a'), 'mkdCode'
728 AssertEqual SyntaxOf('b'), 'mkdCode'
741 Execute (fenced code block syntax with a language specifier):
742 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
744 AssertEqual SyntaxOf('include'), 'cInclude'
745 AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
746 AssertEqual SyntaxOf('def'), 'rubyDefine'
769 Execute (fenced code block syntax with a language specifier after whitespace):
770 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
772 AssertEqual SyntaxOf('include'), 'cInclude'
773 AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
774 AssertEqual SyntaxOf('g:a'), 'vimVar'
775 AssertEqual SyntaxOf('def'), 'rubyDefine'
776 AssertNotEqual SyntaxOf('class'), 'rubyClass'
787 Execute (fenced code block syntax with alias language specifier):
788 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
790 AssertEqual SyntaxOf('g:a'), 'vimVar'
791 AssertEqual SyntaxOf('g:b'), 'vimVar'
798 Execute (fenced code block languages setting):
799 let g:vim_markdown_fenced_languages = ['csharp=cs']
800 source ../ftplugin/markdown.vim
801 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
803 AssertEqual SyntaxOf('foo'), 'csString'
804 unlet g:vim_markdown_fenced_languages
811 Execute (fenced code block includes language syntax with reopening same buffer):
812 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
817 set filetype=markdown
818 execute "normal! i```vim\<cr>let g:a = 1\<cr>```"
820 AssertEqual SyntaxOf('g:a'), 'vimVar'
827 Execute (fenced code block syntax with an unknown language specifier):
828 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
830 AssertEqual SyntaxOf('code'), 'mkdSnippetA_B_'
839 Execute (first = or - in fenced code block is not setex headers):
840 AssertEqual SyntaxOf('='), 'mkdCode'
841 AssertEqual SyntaxOf('-'), 'mkdCode'
848 Execute (fenced code block with extended info strings):
849 AssertEqual SyntaxOf('a'), 'mkdCode'
851 # Code Blocks in pre and code tag
858 Execute (code block in pre tag):
859 AssertEqual SyntaxOf('a'), 'mkdCode'
866 Execute (code block in code tag):
867 AssertEqual SyntaxOf('a'), 'mkdCode'
874 Execute (not code block in escaped pre tag):
875 AssertNotEqual SyntaxOf('a'), 'mkdCode'
882 Execute (not code block in escaped code tag):
883 AssertNotEqual SyntaxOf('a'), 'mkdCode'
894 AssertNotEqual SyntaxOf('x')[0:2], 'tex'
895 AssertNotEqual SyntaxOf('y')[0:2], 'tex'
896 let g:vim_markdown_math=1
898 AssertNotEqual SyntaxOf('a')[0:2], 'tex'
899 AssertNotEqual SyntaxOf('b')[0:2], 'tex'
900 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
901 AssertNotEqual SyntaxOf('d')[0:2], 'tex'
902 AssertNotEqual SyntaxOf('e')[0:2], 'tex'
903 AssertNotEqual SyntaxOf('f')[0:2], 'tex'
904 AssertEqual SyntaxOf('x')[0:2], 'tex'
905 AssertEqual SyntaxOf('y')[0:2], 'tex'
906 let g:vim_markdown_math=0
908 AssertNotEqual SyntaxOf('x')[0:2], 'tex'
909 AssertNotEqual SyntaxOf('y')[0:2], 'tex'
920 Execute (multiline math):
921 let g:vim_markdown_math=1
923 AssertNotEqual SyntaxOf('a')[0:2], 'tex'
924 AssertEqual SyntaxOf('b')[0:2], 'tex'
925 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
931 Execute (math tex highlighting):
932 let g:vim_markdown_math=0
934 AssertNotEqual SyntaxOf('sqrt'), 'texStatement'
935 AssertNotEqual SyntaxOf('frac'), 'texStatement'
936 let g:vim_markdown_math=1
938 AssertEqual SyntaxOf('sqrt'), 'texStatement'
939 AssertEqual SyntaxOf('frac'), 'texStatement'
944 Execute (math ends with $):
945 let g:vim_markdown_math=1
947 AssertEqual SyntaxOf('a')[0:2], 'tex'
948 AssertEqual SyntaxOf('b')[0:2], 'tex'
949 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
954 Execute (math ends with $$):
955 let g:vim_markdown_math=1
957 AssertEqual SyntaxOf('a')[0:2], 'tex'
958 AssertEqual SyntaxOf('b')[0:2], 'tex'
959 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
964 Execute (math conceal in $):
966 setlocal conceallevel=2
967 let g:vim_markdown_math=1
969 AssertEqual synconcealed(1, 1)[0], 1, '$'
970 AssertEqual synconcealed(1, 2)[0], 0
971 AssertEqual synconcealed(1, 3)[0], 0
972 AssertEqual synconcealed(1, 4)[0], 0
973 AssertEqual synconcealed(1, 5)[0], 1, '\le'
974 AssertEqual synconcealed(1, 6)[0], 1
975 AssertEqual synconcealed(1, 7)[0], 1
976 AssertEqual synconcealed(1, 8)[0], 0
977 AssertEqual synconcealed(1, 9)[0], 0
978 AssertEqual synconcealed(1, 10)[0], 0
979 AssertEqual synconcealed(1, 11)[0], 1, '$'
980 setlocal conceallevel=0
989 Execute (math conceal in $$):
991 setlocal conceallevel=2
992 let g:vim_markdown_math=1
994 AssertEqual synconcealed(1, 1)[0], 1, '$$'
995 AssertEqual synconcealed(2, 1)[0], 1, '\omega'
996 AssertEqual synconcealed(3, 1)[0], 0, '0'
997 AssertEqual synconcealed(3, 3)[0], 1, '\le'
998 AssertEqual synconcealed(3, 7)[0], 0, '1'
999 AssertEqual synconcealed(4, 1)[0], 1, '$$'
1000 setlocal conceallevel=0
1010 Execute (YAML frontmatter is controlled by the option):
1011 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
1012 let g:vim_markdown_frontmatter=1
1014 AssertEqual SyntaxOf('a')[0:3], 'yaml'
1015 let g:vim_markdown_frontmatter=0
1017 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
1025 Execute (YAML frontmatter only works if it's the first thing in the file):
1026 let g:vim_markdown_frontmatter=1
1028 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
1037 Execute (rules are not mistaken by YAML frontmatter delimiters):
1038 let g:vim_markdown_frontmatter=1
1040 AssertEqual SyntaxAt(5, 1), 'mkdRule'
1041 unlet g:vim_markdown_frontmatter
1050 Execute (TOML frontmatter is controlled by the option):
1052 AssertNotEqual SyntaxOf('b'), 'tomlString'
1053 let g:vim_markdown_toml_frontmatter=1
1055 AssertEqual SyntaxOf('b'), 'tomlString'
1056 let g:vim_markdown_toml_frontmatter=0
1058 AssertNotEqual SyntaxOf('b'), 'tomlString'
1066 Execute (TOML frontmatter only works if it's the first thing in the file):
1067 let g:vim_markdown_toml_frontmatter=1
1069 AssertNotEqual SyntaxOf('b'), 'tomlString'
1070 unlet g:vim_markdown_toml_frontmatter
1079 Execute (JSON frontmatter is controlled by the option):
1081 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
1082 let g:vim_markdown_json_frontmatter=1
1084 AssertEqual SyntaxOf('a'), 'jsonKeyword'
1085 let g:vim_markdown_json_frontmatter=0
1087 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
1095 Execute (JSON frontmatter only works if it's the first thing in the file):
1096 let g:vim_markdown_json_frontmatter=1
1098 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
1099 unlet g:vim_markdown_json_frontmatter
1110 Execute (header title starts with #):
1111 AssertEqual SyntaxOf('a'), 'htmlH1'
1112 AssertEqual SyntaxOf('b'), 'htmlH2'
1121 # h1 trailing hash #
1127 ## h2 trailing hash ##
1133 ### h3 trailing hash ###
1141 Execute (atx headers):
1142 AssertEqual SyntaxOf('# h1 space'), 'htmlH1'
1143 AssertEqual SyntaxOf('#h1 nospace'), 'htmlH1'
1144 AssertEqual SyntaxOf('# h1 2 spaces'), 'htmlH1'
1145 AssertEqual SyntaxOf('# h1 trailing hash #'), 'htmlH1'
1146 AssertEqual SyntaxOf('## h2 space'), 'htmlH2'
1147 AssertEqual SyntaxOf('##h2 nospace'), 'htmlH2'
1148 AssertEqual SyntaxOf('## h2 trailing hash ##'), 'htmlH2'
1149 AssertEqual SyntaxOf('### h3 space'), 'htmlH3'
1150 AssertEqual SyntaxOf('###h3 nospace'), 'htmlH3'
1151 AssertEqual SyntaxOf('### h3 trailing hash ###'), 'htmlH3'
1152 AssertEqual SyntaxOf('#### h4'), 'htmlH4'
1153 AssertEqual SyntaxOf('##### h5'), 'htmlH5'
1154 AssertEqual SyntaxOf('###### h6'), 'htmlH6'
1163 Execute (atx headers relative positions):
1164 AssertEqual SyntaxOf('# h1 before h2'), 'htmlH1'
1165 AssertEqual SyntaxOf('## h2 between h1s'), 'htmlH2'
1166 AssertEqual SyntaxOf('# h1 after h2'), 'htmlH1'
1175 setex h1 single punctuation
1178 setex h1 punctuation longer than header
1179 ================================
1181 Execute (setex headers):
1182 AssertEqual SyntaxOf('setex h1'), 'htmlH1'
1183 AssertEqual SyntaxOf('^========$'), 'htmlH1'
1184 AssertEqual SyntaxOf('setex h2'), 'htmlH2'
1185 AssertEqual SyntaxOf('--------'), 'htmlH2'
1186 AssertEqual SyntaxOf('setex h1 single punctuation'), 'htmlH1'
1187 AssertEqual SyntaxOf('^=$'), 'htmlH1'
1188 AssertEqual SyntaxOf('setex h1 punctuation longer than header'), 'htmlH1'
1189 AssertEqual SyntaxOf('^================================$'), 'htmlH1'
1195 Execute (prevent list vs Setex confusion):
1196 AssertNotEqual SyntaxOf('- not Setex'), 'htmlH2'
1197 AssertNotEqual SyntaxOf('- becuase list'), 'htmlH2'
1214 Execute (mixed atx and setex headers):
1215 AssertEqual SyntaxOf('setex h1 before atx'), 'htmlH1'
1216 AssertEqual SyntaxOf('==================='), 'htmlH1'
1217 AssertEqual SyntaxOf('## atx h2'), 'htmlH2'
1218 AssertEqual SyntaxOf('### atx h3'), 'htmlH3'
1219 AssertEqual SyntaxOf('# atx h1'), 'htmlH1'
1220 AssertEqual SyntaxOf('setex h2'), 'htmlH2'
1221 AssertEqual SyntaxOf('------------------'), 'htmlH2'
1229 Execute (& and > are not marked as htmlError in lists):
1230 AssertEqual SyntaxOf('-'), 'mkdListItem'
1231 AssertEqual SyntaxOf('1.'), 'mkdListItem'
1232 AssertNotEqual SyntaxOf('&'), 'htmlError'
1233 AssertNotEqual SyntaxOf('>'), 'htmlError'
1239 Execute (list after line break):
1240 AssertEqual SyntaxOf('1'), 'mkdListItem'
1241 AssertEqual SyntaxOf('2'), 'mkdListItem'
1252 Execute (HTML tag in text):
1253 AssertEqual SyntaxOf('p'), 'htmlTagName'
1254 AssertEqual SyntaxOf('<p>'), 'htmlTag'
1255 AssertEqual SyntaxOf('</p>'), 'htmlEndTag'
1256 AssertEqual SyntaxOf('span'), 'htmlTagName'
1257 AssertEqual SyntaxOf('<span>'), 'htmlTag'
1258 AssertEqual SyntaxOf('</span>'), 'htmlEndTag'