From 3df7bff7c4d9310d6a588de22660b88f82ffa3bf Mon Sep 17 00:00:00 2001 From: Hiroshi Shirosaki Date: Mon, 6 Mar 2017 16:55:17 +0900 Subject: [PATCH] Fix last line header folding Fold level should be specified to the last line. Based on the patch by @memeplex Fix #315, #317 --- after/ftplugin/markdown.vim | 8 ++++++-- test/folding.vader | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/after/ftplugin/markdown.vim b/after/ftplugin/markdown.vim index cdf0a26..9ee0100 100644 --- a/after/ftplugin/markdown.vim +++ b/after/ftplugin/markdown.vim @@ -125,7 +125,11 @@ else if l1 =~ '^#' && !s:is_mkdCode(a:lnum) " fold level according to option if s:vim_markdown_folding_level == 1 || matchend(l1, '^#\+') > s:vim_markdown_folding_level - return -1 + if a:lnum == line('$') + return matchend(l1, '^#\+') - 1 + else + return -1 + endif else " headers are not folded return 0 @@ -133,7 +137,7 @@ else endif if l0 =~ '^#' && !s:is_mkdCode(a:lnum-1) - " current line starts with hashes + " previous line starts with hashes return '>'.matchend(l0, '^#\+') else " keep previous foldlevel diff --git a/test/folding.vader b/test/folding.vader index adcae5f..ecf5f9b 100644 --- a/test/folding.vader +++ b/test/folding.vader @@ -36,3 +36,18 @@ Fold Level 2 Execute (fold level ==, --): AssertEqual foldlevel(2), 1, '==' AssertEqual foldlevel(4), 2, '--' + +Given markdown; +# H1 + +## H1.1 + +## H1.2 + +# H2 + +Execute (fold level # in last line): + AssertEqual foldlevel(1), 0, '# H1' + AssertEqual foldlevel(3), 1, '## H1.1' + AssertEqual foldlevel(5), 1, '## H1.2' + AssertEqual foldlevel(7), 0, '# H2' -- 2.39.2