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
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)
|
|
|