X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/5ff124014066ba7882617c283e7750d449caafb4..ca3005b75641664ba9a982a4fa5bb5b871c07d91:/after/ftplugin/markdown.vim?ds=sidebyside diff --git a/after/ftplugin/markdown.vim b/after/ftplugin/markdown.vim index adac473..a140c25 100644 --- a/after/ftplugin/markdown.vim +++ b/after/ftplugin/markdown.vim @@ -6,27 +6,37 @@ " " original version from Steve Losh's gist: https://gist.github.com/1038710 -func! Foldexpr_markdown(lnum) - if (a:lnum == 1) - let l0 = '' - else - let l0 = getline(a:lnum-1) - endif - - let l1 = getline(a:lnum) +func! s:is_mkdCode(lnum) + return synIDattr(synID(a:lnum, 1, 0), 'name') == 'mkdCode' +endfunc - let l2 = getline(a:lnum+1) +func! s:effective_line(lnum) + let line = getline(a:lnum) + return (line !~ '^[=-#]' || s:is_mkdCode(a:lnum)) ? '' : line +endfunc +func! Foldexpr_markdown(lnum) + let l2 = s:effective_line(a:lnum+1) if l2 =~ '^==\+\s*' " next line is underlined (level 1) return '>1' elseif l2 =~ '^--\+\s*' " next line is underlined (level 2) return '>2' - elseif l1 =~ '^#' + endif + + let l1 = s:effective_line(a:lnum) + if l1 =~ '^#' " don't include the section title in the fold return '-1' - elseif l0 =~ '^#' + endif + + if (a:lnum == 1) + let l0 = '' + else + let l0 = s:effective_line(a:lnum-1) + endif + if l0 =~ '^#' " current line starts with hashes return '>'.matchend(l0, '^#\+') else