" Tests atx and setext folding, and :Toc. Before: source ../after/ftplugin/markdown.vim After: setlocal foldexpr=0 setlocal foldmethod=manual Given markdown; # chap 1 hello world ```bash # some bash scripting pwd # this is another comment # other echo "foo" ``` ## chap 1.1 - dog - cat ~~~~bash mkdir foo cd foo ~~~~ ### chap 1.1.1 - dragons - fenixs # chap 2 another ## chap 2.1 - uk - japan - china # chap 3 nothing here chap 4 ====== setext are evil chap 4.1 -------- evil indeed ````bash # get system info uname -a ```` Execute (fold level): AssertEqual foldlevel(1), 0, '# chap 1' AssertEqual foldlevel(3), 1, 'hello' AssertEqual foldlevel(6), 1, '```bash' AssertEqual foldlevel(7), 1, '# some bash scripting' AssertEqual foldlevel(15), 1, '## chap 1.1' AssertEqual foldlevel(21), 2, 'mkdir foo' AssertEqual foldlevel(25), 2, '### chap 1.1.1' AssertEqual foldlevel(27), 3, '- dragons' AssertEqual foldlevel(30), 1, '# chap 2' AssertEqual foldlevel(32), 1, 'another' AssertEqual foldlevel(34), 1, '# chap 2.1' AssertEqual foldlevel(37), 2, '- japan' AssertEqual foldlevel(41), 1, '# chap 3' AssertEqual foldlevel(45), 1, 'chap 4\n======' AssertEqual foldlevel(48), 1, 'setext are evil' AssertEqual foldlevel(50), 2, 'chap 4.1\n------' " BUG: for lines 30, 41, 45, the foldlevel should be 0. " The folding behavior itself is correct, but the level number isn't. Execute (fold text result): AssertEqual foldtextresult(2), '+-- 28 lines: hello' AssertEqual foldtextresult(31), '+-- 10 lines: another' AssertEqual foldtextresult(42), '+-- 3 lines: nothing here' AssertEqual foldtextresult(45), '+-- 14 lines: chap 4' " BUG: for line 45, vim shows and calling foldtextresult even echoes 15 lines. Execute (check TOC): :Toc let res = getloclist(0) let elem = res[0] AssertEqual elem.lnum, 1 AssertEqual elem.text, '# chap 1' let elem = res[1] AssertEqual elem.lnum, 15 AssertEqual elem.text, '## chap 1.1' let elem = res[2] AssertEqual elem.lnum, 25 AssertEqual elem.text, '### chap 1.1.1' let elem = res[3] AssertEqual elem.lnum, 30 AssertEqual elem.text, '# chap 2' let elem = res[4] AssertEqual elem.lnum, 34 AssertEqual elem.text, '## chap 2.1' let elem = res[5] AssertEqual elem.lnum, 41 AssertEqual elem.text, '# chap 3' let elem = res[6] AssertEqual elem.lnum, 45 AssertEqual elem.text, 'chap 4' let elem = res[7] AssertEqual elem.lnum, 50 AssertEqual elem.text, 'chap 4.1'