Files

38 lines
731 B
VimL

function! CoffeeIndentLevel(lnum)
return indent(a:lnum) / &shiftwidth
endfunction
function! NextNonBlankLine(lnum)
let numlines = line('$')
let current = a:lnum + 1
while current <= numlines
if getline(current) =~? '\v\S'
return current
endif
let current += 1
endwhile
return -2
endfunction
function! CoffeeFolds()
if getline(v:lnum) =~ '\v^\s*$'
return '-1'
endif
let this_indent = IndentLevel(a:lnum)
let next_indent = IndentLevel(NextNonBlankLine(a:lnum))
if next_indent == this_indent
return this_indent
elseif next_indent < this_indent
return this_indent
elseif next_indent > this_indent
return '>' . next_indent
endif
endfunction
setlocal foldmethod=expr
setlocal foldexpr=CoffeeFolds()