function! Indent_level(lnum) return indent(a:lnum) / &shiftwidth endfunction function! Fold(lnum) let l:c = Indent_level(a:lnum) let l:n = Indent_level(a:lnum + 1) let l:p = Indent_level(a:lnum - 1) if l:n > l:c return '>' . l:n endif if l:n < l:c return '<' . l:c endif return l:c endfunction setlocal foldmethod=expr setlocal foldexpr=Fold(v:lnum)