vim/after/ftplugin/json.vim

21 lines
516 B
VimL

" Set custom fold expression
setlocal foldmethod=expr
setlocal foldexpr=JsonFold(v:lnum)
" Custom fold function
function! JsonFold(lnum)
let l:line = getline(a:lnum)
if l:line =~ '{' && l:line !~ '}' && l:line !~ '".*{.*"'
return 'a1'
elseif l:line =~ '[' && l:line !~ ']' && l:line !~ '".*].*"'
return 'a1'
elseif l:line =~ '}' && l:line !~ '{' && l:line !~ '".*}.*"'
return 's1'
elseif l:line =~ ']' && l:line !~ '[' && l:line !~ '".*[.*"'
return 's1'
endif
return '='
endfunction