Before: let g:vim_markdown_folding_style_pythonic = 1 source ../after/ftplugin/markdown.vim After: setlocal foldexpr=0 setlocal foldmethod=manual Given markdown; # Title ## Chapter 1 ``` This is code block # This is just a comment ``` ## Chapter 2 foobar Execute (fold level # in code block): AssertEqual foldlevel(1), 0, '# Title' AssertEqual foldlevel(3), 1, '## Chapter 1' AssertEqual foldlevel(7), 1, '# This is just a comment' AssertEqual foldlevel(8), 1, '```' AssertEqual foldlevel(10), 1, '## Chapter 2' AssertEqual foldlevel(12), 1, 'foobar' Execute (fold text of chapters): let b:width = winwidth(0) let b:hyphen = repeat('-', b:width - 18 > 2 ? b:width - 18 : b:width - 9 > 0 ? 3 : 2) AssertEqual foldtextresult(3), strpart('## Chapter 1', 0, b:width - 9) . ' ' . b:hyphen . ' 6' AssertEqual foldtextresult(10), strpart('## Chapter 2', 0, b:width - 9) . ' ' . b:hyphen . ' 2' Given markdown; Fold text 1 =========== Fold text 2 ----------- Execute (fold level ==, --): AssertEqual foldlevel(2), 0, '==' AssertEqual foldlevel(4), 1, '--' Execute (fold text of ==, --): let b:width = winwidth(0) let b:hyphen = repeat('-', b:width - 17 > 2 ? b:width - 17 : b:width - 9 > 0 ? 3 : 2) AssertEqual foldtextresult(3), strpart('Fold text 2', 0, b:width - 9) . ' ' . b:hyphen . ' 1' Given markdown; Headline foobar # Title Execute (fold any preamble): AssertEqual foldlevel(1), 1, 'Headline' AssertEqual foldlevel(3), 1, 'foobar' AssertEqual foldlevel(5), 0, '# Title'