You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

34 lines
725 B

function! Title_level(lnum)
let l:line = getline(a:lnum)
let l:hash = matchstr(l:line, '^#*')
let l:count = len(l:hash)
return l:count
endfunction
function! Is_empty(lnum)
let l:line = getline(a:lnum)
if match(l:line, '^\s*$') != -1
return 1
endif
return 0
endfunction
function! Markdown_fold(lnum)
let l:level = Title_level(a:lnum)
if l:level != 0
return max([l:level - 1, 0])
endif
let l:empty = Is_empty(a:lnum)
if l:empty == 1
let l:next_level = Title_level(a:lnum + 1)
if l:next_level != 0
return max([l:next_level - 2, 0])
endif
endif
let l:prev_fold = foldlevel(a:lnum - 1)
" return l:prev_fold
return "="
endfunction
setlocal foldmethod=expr
setlocal foldexpr=Markdown_fold(v:lnum)