25 lines
603 B
VimL
25 lines
603 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
|
|
|
|
" Override default group names
|
|
hi link jsonQuote Operator
|
|
hi link jsonKeyword Keyword
|