21 lines
		
	
	
		
			516 B
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			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
 |