aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Hovorka <[email protected]>2018-07-18 11:16:36 -0600
committerAdam Hovorka <[email protected]>2018-07-18 11:16:36 -0600
commit189738a11cab0657724d853ba1b0bb85a034e3bc (patch)
tree9fb562a8c1cc4903809300cbf78de6c0fa396b86
parentc817818569ee99df20763d250a9d0cd4eb1d59d9 (diff)
Open JSON folds by default
-rw-r--r--base/vim/ftplugin/json.vim37
-rw-r--r--base/vim/ftplugin/php.vim240
-rw-r--r--base/vim/indent/php.vim240
-rw-r--r--base/vim/syntax/json.vim93
4 files changed, 275 insertions, 335 deletions
diff --git a/base/vim/ftplugin/json.vim b/base/vim/ftplugin/json.vim
index 3ee1062..1ae1b99 100644
--- a/base/vim/ftplugin/json.vim
+++ b/base/vim/ftplugin/json.vim
@@ -1,40 +1,33 @@
-" Vim syntax file
-" Language: JSON
-" Maintainer: Eli Parra <[email protected]> https://github.com/elzr/vim-json
-" Last Change: 2014-05-20 added warning toggle
-
-"uncomment to enable folding of `{...}` and `[...]` blocks
-"setlocal foldmethod=syntax
-
"conceal by default
if !exists("g:vim_json_syntax_conceal")
- let g:vim_json_syntax_conceal = 1
+ let g:vim_json_syntax_conceal = 1
end
"have warnings by default
if !exists("g:vim_json_warnings")
- let g:vim_json_warnings = 1
+ let g:vim_json_warnings = 1
end
"set concealcursor blank by default
"this should turn off the concealing in the current line (where the cursor is at),
"on all modes (normal, visual, insert)
if !exists("g:vim_json_syntax_concealcursor")
- let g:vim_json_syntax_concealcursor = ""
+ let g:vim_json_syntax_concealcursor = ""
end
if has('conceal')
- if (g:vim_json_syntax_conceal == 1)
- "level 2 means concealed text gets completely hidden unless a
- "replacement is defined (none is defined by us)
- setlocal conceallevel=2
- let &l:concealcursor = g:vim_json_syntax_concealcursor
- else
- "level 0 means text is shown normally = no concealing
- setlocal conceallevel=0
- endif
- "maybe g:vim_json_syntax_conceal could be settable to 0,1,2 to map
- "directly to vim's conceallevels? unsure if anyone cares
+ if (g:vim_json_syntax_conceal == 1)
+ "level 2 means concealed text gets completely hidden unless a
+ "replacement is defined (none is defined by us)
+ setlocal conceallevel=2
+ let &l:concealcursor = g:vim_json_syntax_concealcursor
+ else
+ "level 0 means text is shown normally = no concealing
+ setlocal conceallevel=0
+ endif
+ "maybe g:vim_json_syntax_conceal could be settable to 0,1,2 to map
+ "directly to vim's conceallevels? unsure if anyone cares
endif
setlocal foldmethod=syntax
+normal zR
diff --git a/base/vim/ftplugin/php.vim b/base/vim/ftplugin/php.vim
index c5cba58..3eeb884 100644
--- a/base/vim/ftplugin/php.vim
+++ b/base/vim/ftplugin/php.vim
@@ -1,34 +1,10 @@
-" Vim indent file
-" Language: Php
-" Authors: Miles Lott <[email protected]>, Johannes Zellner <[email protected]>, Pim Snel <[email protected]>
-" URL: http://lingewoud.nl/downloads.php
-" Last Change: 23 feb 2004
-" Version: 0.3
-" Notes: This is a combination of the PHP indent file of Miles Lott with
-" the HTML indent file of Johannes Zellner. Usefull for editing
-" php-files with html parts in it.
-"
-" Changelog:
-" 0.3 - 25 mar 2004
-" - fixed wrong indention when a php-tag is opened and closed on
-" one single line.
-" 0.2 - 23 feb 2004
-" - applied patch from Holger Dzeik <[email protected]>
-" - added changelog
-" - added default indention of 3 spaces after the <?php for better
-" reading
-" - replaced URL
-" - reformatted the options section
-" 0.1 - 27 mar 2003
-" - initial creation of html-enhanced php indent-file
-
" Options:
let php_noindent_switch=0 " set this to '1' to not try to indent switch/case statements
"set sw=3 " default shiftwidth of 3 spaces
if exists("b:did_indent")
- finish
+ finish
endif
let b:did_indent = 1
@@ -38,83 +14,83 @@ setlocal indentkeys+=0=,0),=EO,o,O,*<Return>,<>>,<bs>,{,}
" Only define the function once.
if exists("*GetPhpIndent")
- finish
+ finish
endif
" Handle option(s)
if exists("php_noindent_switch")
- let b:php_noindent_switch=1
+ let b:php_noindent_switch=1
endif
if exists('g:html_indent_tags')
- unlet g:html_indent_tags
+ unlet g:html_indent_tags
endif
function GetPhpIndent()
- " Find a non-empty line above the current line.
- let lnum = prevnonblank(v:lnum - 1)
-
- " Hit the start of the file, use zero indent.
- if lnum == 0
- return 0
- endif
-
- let line = getline(lnum) " last line
- let cline = getline(v:lnum) " current line
- let pline = getline(lnum - 1) " previous to last line
- let ind = indent(lnum)
-
- let restore_ic=&ic
- let &ic=1 " ignore case
-
- let ind = <SID>HtmlIndentSum(lnum, -1)
- let ind = ind + <SID>HtmlIndentSum(v:lnum, 0)
-
- let &ic=restore_ic
-
- let ind = indent(lnum) + (&sw * ind)
-
- " Indent after php open tags
- if line =~ '<?php' && line !~ '?>'
- let ind = ind + &sw
- endif
- if cline =~ '^\s*[?>]' " // Fix from Holger Dzeik <[email protected]> Thanks!
- let ind = ind - &sw
- endif
-
-
- if exists("b:php_noindent_switch") " version 1 behavior, diy switch/case,etc
- " Indent blocks enclosed by {} or ()
- if line =~ '[{(]\s*\(#[^)}]*\)\=$'
- let ind = ind + &sw
- endif
- if cline =~ '^\s*[)}]'
- let ind = ind - &sw
- endif
- return ind
- else " Try to indent switch/case statements as well
- " Indent blocks enclosed by {} or () or case statements, with some anal requirements
- if line =~ 'case.*:\|[{(]\s*\(#[^)}]*\)\=$'
- let ind = ind + &sw
- " return if the current line is not another case statement of the previous line is a bracket open
- if cline !~ '.*case.*:\|default:' || line =~ '[{(]\s*\(#[^)}]*\)\=$'
- return ind
- endif
- endif
- if cline =~ '^\s*case.*:\|^\s*default:\|^\s*[)}]'
- let ind = ind - &sw
- " if the last line is a break or return, or the current line is a close bracket,
- " or if the previous line is a default statement, subtract another
- if line =~ '^\s*break;\|^\s*return\|' && cline =~ '^\s*[)}]' && pline =~ 'default:'
- let ind = ind - &sw
- endif
- endif
-
- if line =~ 'default:'
- let ind = ind + &sw
- endif
- return ind
- endif
+ " Find a non-empty line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+
+ " Hit the start of the file, use zero indent.
+ if lnum == 0
+ return 0
+ endif
+
+ let line = getline(lnum) " last line
+ let cline = getline(v:lnum) " current line
+ let pline = getline(lnum - 1) " previous to last line
+ let ind = indent(lnum)
+
+ let restore_ic=&ic
+ let &ic=1 " ignore case
+
+ let ind = <SID>HtmlIndentSum(lnum, -1)
+ let ind = ind + <SID>HtmlIndentSum(v:lnum, 0)
+
+ let &ic=restore_ic
+
+ let ind = indent(lnum) + (&sw * ind)
+
+ " Indent after php open tags
+ if line =~ '<?php' && line !~ '?>'
+ let ind = ind + &sw
+ endif
+ if cline =~ '^\s*[?>]' " // Fix from Holger Dzeik <[email protected]> Thanks!
+ let ind = ind - &sw
+ endif
+
+
+ if exists("b:php_noindent_switch") " version 1 behavior, diy switch/case,etc
+ " Indent blocks enclosed by {} or ()
+ if line =~ '[{(]\s*\(#[^)}]*\)\=$'
+ let ind = ind + &sw
+ endif
+ if cline =~ '^\s*[)}]'
+ let ind = ind - &sw
+ endif
+ return ind
+ else " Try to indent switch/case statements as well
+ " Indent blocks enclosed by {} or () or case statements, with some anal requirements
+ if line =~ 'case.*:\|[{(]\s*\(#[^)}]*\)\=$'
+ let ind = ind + &sw
+ " return if the current line is not another case statement of the previous line is a bracket open
+ if cline !~ '.*case.*:\|default:' || line =~ '[{(]\s*\(#[^)}]*\)\=$'
+ return ind
+ endif
+ endif
+ if cline =~ '^\s*case.*:\|^\s*default:\|^\s*[)}]'
+ let ind = ind - &sw
+ " if the last line is a break or return, or the current line is a close bracket,
+ " or if the previous line is a default statement, subtract another
+ if line =~ '^\s*break;\|^\s*return\|' && cline =~ '^\s*[)}]' && pline =~ 'default:'
+ let ind = ind - &sw
+ endif
+ endif
+
+ if line =~ 'default:'
+ let ind = ind + &sw
+ endif
+ return ind
+ endif
endfunction
@@ -126,11 +102,11 @@ endfunction
" [-- helper function to assemble tag list --]
fun! <SID>HtmlIndentPush(tag)
- if exists('g:html_indent_tags')
- let g:html_indent_tags = g:html_indent_tags.'\|'.a:tag
- else
- let g:html_indent_tags = a:tag
- endif
+ if exists('g:html_indent_tags')
+ let g:html_indent_tags = g:html_indent_tags.'\|'.a:tag
+ else
+ let g:html_indent_tags = a:tag
+ endif
endfun
@@ -201,20 +177,20 @@ call <SID>HtmlIndentPush('var')
" [-- <ELEMENT ? O O ...> --]
if !exists('g:html_indent_strict')
- call <SID>HtmlIndentPush('body')
- call <SID>HtmlIndentPush('head')
- call <SID>HtmlIndentPush('html')
- call <SID>HtmlIndentPush('tbody')
+ call <SID>HtmlIndentPush('body')
+ call <SID>HtmlIndentPush('head')
+ call <SID>HtmlIndentPush('html')
+ call <SID>HtmlIndentPush('tbody')
endif
" [-- <ELEMENT ? O - ...> --]
if !exists('g:html_indent_strict_table')
- call <SID>HtmlIndentPush('th')
- call <SID>HtmlIndentPush('td')
- call <SID>HtmlIndentPush('tr')
- call <SID>HtmlIndentPush('tfoot')
- call <SID>HtmlIndentPush('thead')
+ call <SID>HtmlIndentPush('th')
+ call <SID>HtmlIndentPush('td')
+ call <SID>HtmlIndentPush('tr')
+ call <SID>HtmlIndentPush('tfoot')
+ call <SID>HtmlIndentPush('thead')
endif
delfun <SID>HtmlIndentPush
@@ -223,50 +199,50 @@ set cpo-=C
" [-- count indent-increasing tags of line a:lnum --]
fun! <SID>HtmlIndentOpen(lnum)
- let s = substitute('x'.getline(a:lnum),
- \ '.\{-}\(\(<\)\('.g:html_indent_tags.'\)\>\)', "\1", 'g')
- let s = substitute(s, "[^\1].*$", '', '')
- return strlen(s)
+ let s = substitute('x'.getline(a:lnum),
+ \ '.\{-}\(\(<\)\('.g:html_indent_tags.'\)\>\)', "\1", 'g')
+ let s = substitute(s, "[^\1].*$", '', '')
+ return strlen(s)
endfun
" [-- count indent-decreasing tags of line a:lnum --]
fun! <SID>HtmlIndentClose(lnum)
- let s = substitute('x'.getline(a:lnum),
- \ '.\{-}\(\(<\)/\('.g:html_indent_tags.'\)\>>\)', "\1", 'g')
- let s = substitute(s, "[^\1].*$", '', '')
- return strlen(s)
+ let s = substitute('x'.getline(a:lnum),
+ \ '.\{-}\(\(<\)/\('.g:html_indent_tags.'\)\>>\)', "\1", 'g')
+ let s = substitute(s, "[^\1].*$", '', '')
+ return strlen(s)
endfun
" [-- count indent-increasing '{' of (java|css) line a:lnum --]
fun! <SID>HtmlIndentOpenAlt(lnum)
- return strlen(substitute(getline(a:lnum), '[^{]\+', '', 'g'))
+ return strlen(substitute(getline(a:lnum), '[^{]\+', '', 'g'))
endfun
" [-- count indent-decreasing '}' of (java|css) line a:lnum --]
fun! <SID>HtmlIndentCloseAlt(lnum)
- return strlen(substitute(getline(a:lnum), '[^}]\+', '', 'g'))
+ return strlen(substitute(getline(a:lnum), '[^}]\+', '', 'g'))
endfun
" [-- return the sum of indents respecting the syntax of a:lnum --]
fun! <SID>HtmlIndentSum(lnum, style)
- if a:style == match(getline(a:lnum), '^\s*</')
- if a:style == match(getline(a:lnum), '^\s*</\<\('.g:html_indent_tags.'\)\>')
- let open = <SID>HtmlIndentOpen(a:lnum)
- let close = <SID>HtmlIndentClose(a:lnum)
- if 0 != open || 0 != close
- return open - close
- endif
- endif
+ if a:style == match(getline(a:lnum), '^\s*</')
+ if a:style == match(getline(a:lnum), '^\s*</\<\('.g:html_indent_tags.'\)\>')
+ let open = <SID>HtmlIndentOpen(a:lnum)
+ let close = <SID>HtmlIndentClose(a:lnum)
+ if 0 != open || 0 != close
+ return open - close
+ endif
endif
- if '' != &syntax &&
- \ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\(css\|java\).*' &&
- \ synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name')
- \ =~ '\(css\|java\).*'
- if a:style == match(getline(a:lnum), '^\s*}')
- return <SID>HtmlIndentOpenAlt(a:lnum) - <SID>HtmlIndentCloseAlt(a:lnum)
- endif
+ endif
+ if '' != &syntax &&
+ \ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\(css\|java\).*' &&
+ \ synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name')
+ \ =~ '\(css\|java\).*'
+ if a:style == match(getline(a:lnum), '^\s*}')
+ return <SID>HtmlIndentOpenAlt(a:lnum) - <SID>HtmlIndentCloseAlt(a:lnum)
endif
- return 0
+ endif
+ return 0
endfun
" vim: set ts=3 sw=3:
diff --git a/base/vim/indent/php.vim b/base/vim/indent/php.vim
index c5cba58..3eeb884 100644
--- a/base/vim/indent/php.vim
+++ b/base/vim/indent/php.vim
@@ -1,34 +1,10 @@
-" Vim indent file
-" Language: Php
-" Authors: Miles Lott <[email protected]>, Johannes Zellner <[email protected]>, Pim Snel <[email protected]>
-" URL: http://lingewoud.nl/downloads.php
-" Last Change: 23 feb 2004
-" Version: 0.3
-" Notes: This is a combination of the PHP indent file of Miles Lott with
-" the HTML indent file of Johannes Zellner. Usefull for editing
-" php-files with html parts in it.
-"
-" Changelog:
-" 0.3 - 25 mar 2004
-" - fixed wrong indention when a php-tag is opened and closed on
-" one single line.
-" 0.2 - 23 feb 2004
-" - applied patch from Holger Dzeik <[email protected]>
-" - added changelog
-" - added default indention of 3 spaces after the <?php for better
-" reading
-" - replaced URL
-" - reformatted the options section
-" 0.1 - 27 mar 2003
-" - initial creation of html-enhanced php indent-file
-
" Options:
let php_noindent_switch=0 " set this to '1' to not try to indent switch/case statements
"set sw=3 " default shiftwidth of 3 spaces
if exists("b:did_indent")
- finish
+ finish
endif
let b:did_indent = 1
@@ -38,83 +14,83 @@ setlocal indentkeys+=0=,0),=EO,o,O,*<Return>,<>>,<bs>,{,}
" Only define the function once.
if exists("*GetPhpIndent")
- finish
+ finish
endif
" Handle option(s)
if exists("php_noindent_switch")
- let b:php_noindent_switch=1
+ let b:php_noindent_switch=1
endif
if exists('g:html_indent_tags')
- unlet g:html_indent_tags
+ unlet g:html_indent_tags
endif
function GetPhpIndent()
- " Find a non-empty line above the current line.
- let lnum = prevnonblank(v:lnum - 1)
-
- " Hit the start of the file, use zero indent.
- if lnum == 0
- return 0
- endif
-
- let line = getline(lnum) " last line
- let cline = getline(v:lnum) " current line
- let pline = getline(lnum - 1) " previous to last line
- let ind = indent(lnum)
-
- let restore_ic=&ic
- let &ic=1 " ignore case
-
- let ind = <SID>HtmlIndentSum(lnum, -1)
- let ind = ind + <SID>HtmlIndentSum(v:lnum, 0)
-
- let &ic=restore_ic
-
- let ind = indent(lnum) + (&sw * ind)
-
- " Indent after php open tags
- if line =~ '<?php' && line !~ '?>'
- let ind = ind + &sw
- endif
- if cline =~ '^\s*[?>]' " // Fix from Holger Dzeik <[email protected]> Thanks!
- let ind = ind - &sw
- endif
-
-
- if exists("b:php_noindent_switch") " version 1 behavior, diy switch/case,etc
- " Indent blocks enclosed by {} or ()
- if line =~ '[{(]\s*\(#[^)}]*\)\=$'
- let ind = ind + &sw
- endif
- if cline =~ '^\s*[)}]'
- let ind = ind - &sw
- endif
- return ind
- else " Try to indent switch/case statements as well
- " Indent blocks enclosed by {} or () or case statements, with some anal requirements
- if line =~ 'case.*:\|[{(]\s*\(#[^)}]*\)\=$'
- let ind = ind + &sw
- " return if the current line is not another case statement of the previous line is a bracket open
- if cline !~ '.*case.*:\|default:' || line =~ '[{(]\s*\(#[^)}]*\)\=$'
- return ind
- endif
- endif
- if cline =~ '^\s*case.*:\|^\s*default:\|^\s*[)}]'
- let ind = ind - &sw
- " if the last line is a break or return, or the current line is a close bracket,
- " or if the previous line is a default statement, subtract another
- if line =~ '^\s*break;\|^\s*return\|' && cline =~ '^\s*[)}]' && pline =~ 'default:'
- let ind = ind - &sw
- endif
- endif
-
- if line =~ 'default:'
- let ind = ind + &sw
- endif
- return ind
- endif
+ " Find a non-empty line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+
+ " Hit the start of the file, use zero indent.
+ if lnum == 0
+ return 0
+ endif
+
+ let line = getline(lnum) " last line
+ let cline = getline(v:lnum) " current line
+ let pline = getline(lnum - 1) " previous to last line
+ let ind = indent(lnum)
+
+ let restore_ic=&ic
+ let &ic=1 " ignore case
+
+ let ind = <SID>HtmlIndentSum(lnum, -1)
+ let ind = ind + <SID>HtmlIndentSum(v:lnum, 0)
+
+ let &ic=restore_ic
+
+ let ind = indent(lnum) + (&sw * ind)
+
+ " Indent after php open tags
+ if line =~ '<?php' && line !~ '?>'
+ let ind = ind + &sw
+ endif
+ if cline =~ '^\s*[?>]' " // Fix from Holger Dzeik <[email protected]> Thanks!
+ let ind = ind - &sw
+ endif
+
+
+ if exists("b:php_noindent_switch") " version 1 behavior, diy switch/case,etc
+ " Indent blocks enclosed by {} or ()
+ if line =~ '[{(]\s*\(#[^)}]*\)\=$'
+ let ind = ind + &sw
+ endif
+ if cline =~ '^\s*[)}]'
+ let ind = ind - &sw
+ endif
+ return ind
+ else " Try to indent switch/case statements as well
+ " Indent blocks enclosed by {} or () or case statements, with some anal requirements
+ if line =~ 'case.*:\|[{(]\s*\(#[^)}]*\)\=$'
+ let ind = ind + &sw
+ " return if the current line is not another case statement of the previous line is a bracket open
+ if cline !~ '.*case.*:\|default:' || line =~ '[{(]\s*\(#[^)}]*\)\=$'
+ return ind
+ endif
+ endif
+ if cline =~ '^\s*case.*:\|^\s*default:\|^\s*[)}]'
+ let ind = ind - &sw
+ " if the last line is a break or return, or the current line is a close bracket,
+ " or if the previous line is a default statement, subtract another
+ if line =~ '^\s*break;\|^\s*return\|' && cline =~ '^\s*[)}]' && pline =~ 'default:'
+ let ind = ind - &sw
+ endif
+ endif
+
+ if line =~ 'default:'
+ let ind = ind + &sw
+ endif
+ return ind
+ endif
endfunction
@@ -126,11 +102,11 @@ endfunction
" [-- helper function to assemble tag list --]
fun! <SID>HtmlIndentPush(tag)
- if exists('g:html_indent_tags')
- let g:html_indent_tags = g:html_indent_tags.'\|'.a:tag
- else
- let g:html_indent_tags = a:tag
- endif
+ if exists('g:html_indent_tags')
+ let g:html_indent_tags = g:html_indent_tags.'\|'.a:tag
+ else
+ let g:html_indent_tags = a:tag
+ endif
endfun
@@ -201,20 +177,20 @@ call <SID>HtmlIndentPush('var')
" [-- <ELEMENT ? O O ...> --]
if !exists('g:html_indent_strict')
- call <SID>HtmlIndentPush('body')
- call <SID>HtmlIndentPush('head')
- call <SID>HtmlIndentPush('html')
- call <SID>HtmlIndentPush('tbody')
+ call <SID>HtmlIndentPush('body')
+ call <SID>HtmlIndentPush('head')
+ call <SID>HtmlIndentPush('html')
+ call <SID>HtmlIndentPush('tbody')
endif
" [-- <ELEMENT ? O - ...> --]
if !exists('g:html_indent_strict_table')
- call <SID>HtmlIndentPush('th')
- call <SID>HtmlIndentPush('td')
- call <SID>HtmlIndentPush('tr')
- call <SID>HtmlIndentPush('tfoot')
- call <SID>HtmlIndentPush('thead')
+ call <SID>HtmlIndentPush('th')
+ call <SID>HtmlIndentPush('td')
+ call <SID>HtmlIndentPush('tr')
+ call <SID>HtmlIndentPush('tfoot')
+ call <SID>HtmlIndentPush('thead')
endif
delfun <SID>HtmlIndentPush
@@ -223,50 +199,50 @@ set cpo-=C
" [-- count indent-increasing tags of line a:lnum --]
fun! <SID>HtmlIndentOpen(lnum)
- let s = substitute('x'.getline(a:lnum),
- \ '.\{-}\(\(<\)\('.g:html_indent_tags.'\)\>\)', "\1", 'g')
- let s = substitute(s, "[^\1].*$", '', '')
- return strlen(s)
+ let s = substitute('x'.getline(a:lnum),
+ \ '.\{-}\(\(<\)\('.g:html_indent_tags.'\)\>\)', "\1", 'g')
+ let s = substitute(s, "[^\1].*$", '', '')
+ return strlen(s)
endfun
" [-- count indent-decreasing tags of line a:lnum --]
fun! <SID>HtmlIndentClose(lnum)
- let s = substitute('x'.getline(a:lnum),
- \ '.\{-}\(\(<\)/\('.g:html_indent_tags.'\)\>>\)', "\1", 'g')
- let s = substitute(s, "[^\1].*$", '', '')
- return strlen(s)
+ let s = substitute('x'.getline(a:lnum),
+ \ '.\{-}\(\(<\)/\('.g:html_indent_tags.'\)\>>\)', "\1", 'g')
+ let s = substitute(s, "[^\1].*$", '', '')
+ return strlen(s)
endfun
" [-- count indent-increasing '{' of (java|css) line a:lnum --]
fun! <SID>HtmlIndentOpenAlt(lnum)
- return strlen(substitute(getline(a:lnum), '[^{]\+', '', 'g'))
+ return strlen(substitute(getline(a:lnum), '[^{]\+', '', 'g'))
endfun
" [-- count indent-decreasing '}' of (java|css) line a:lnum --]
fun! <SID>HtmlIndentCloseAlt(lnum)
- return strlen(substitute(getline(a:lnum), '[^}]\+', '', 'g'))
+ return strlen(substitute(getline(a:lnum), '[^}]\+', '', 'g'))
endfun
" [-- return the sum of indents respecting the syntax of a:lnum --]
fun! <SID>HtmlIndentSum(lnum, style)
- if a:style == match(getline(a:lnum), '^\s*</')
- if a:style == match(getline(a:lnum), '^\s*</\<\('.g:html_indent_tags.'\)\>')
- let open = <SID>HtmlIndentOpen(a:lnum)
- let close = <SID>HtmlIndentClose(a:lnum)
- if 0 != open || 0 != close
- return open - close
- endif
- endif
+ if a:style == match(getline(a:lnum), '^\s*</')
+ if a:style == match(getline(a:lnum), '^\s*</\<\('.g:html_indent_tags.'\)\>')
+ let open = <SID>HtmlIndentOpen(a:lnum)
+ let close = <SID>HtmlIndentClose(a:lnum)
+ if 0 != open || 0 != close
+ return open - close
+ endif
endif
- if '' != &syntax &&
- \ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\(css\|java\).*' &&
- \ synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name')
- \ =~ '\(css\|java\).*'
- if a:style == match(getline(a:lnum), '^\s*}')
- return <SID>HtmlIndentOpenAlt(a:lnum) - <SID>HtmlIndentCloseAlt(a:lnum)
- endif
+ endif
+ if '' != &syntax &&
+ \ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\(css\|java\).*' &&
+ \ synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name')
+ \ =~ '\(css\|java\).*'
+ if a:style == match(getline(a:lnum), '^\s*}')
+ return <SID>HtmlIndentOpenAlt(a:lnum) - <SID>HtmlIndentCloseAlt(a:lnum)
endif
- return 0
+ endif
+ return 0
endfun
" vim: set ts=3 sw=3:
diff --git a/base/vim/syntax/json.vim b/base/vim/syntax/json.vim
index 3423eba..e094be1 100644
--- a/base/vim/syntax/json.vim
+++ b/base/vim/syntax/json.vim
@@ -1,8 +1,3 @@
-" Vim syntax file
-" Language: JSON
-" Maintainer: Eli Parra <[email protected]> https://github.com/elzr/vim-json
-" Last Change: 2014-12-20 Load ftplugin/json.vim
-
" Reload the definition of g:vim_json_syntax_conceal
" see https://github.com/elzr/vim-json/issues/42
runtime! ftplugin/json.vim
@@ -24,9 +19,9 @@ syntax match jsonNoise /\%(:\|,\)/
" Separated into a match and region because a region by itself is always greedy
syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze[[:blank:]\r\n]*[,}\]]/ contains=jsonString
if has('conceal') && g:vim_json_syntax_conceal == 1
- syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ concealends contains=jsonEscape contained
+ syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ concealends contains=jsonEscape contained
else
- syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=jsonEscape contained
+ syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=jsonEscape contained
endif
" Syntax: JSON does not allow strings with single quotes, unlike JavaScript.
@@ -36,9 +31,9 @@ syn region jsonStringSQError oneline start=+'+ skip=+\\\\\|\\"+ end=+'+
" Separated into a match and region because a region by itself is always greedy
syn match jsonKeywordMatch /"\([^"]\|\\\"\)\+"[[:blank:]\r\n]*\:/ contains=jsonKeyword
if has('conceal') && g:vim_json_syntax_conceal == 1
- syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ concealends contains=jsonEscape contained
+ syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ concealends contains=jsonEscape contained
else
- syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ contains=jsonEscape contained
+ syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ contains=jsonEscape contained
endif
" Syntax: Escape sequences
@@ -50,31 +45,31 @@ syn match jsonNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)
" ERROR WARNINGS **********************************************
if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1)
- " Syntax: Strings should always be enclosed with quotes.
- syn match jsonNoQuotesError "\<[[:alpha:]][[:alnum:]]*\>"
- syn match jsonTripleQuotesError /"""/
+ " Syntax: Strings should always be enclosed with quotes.
+ syn match jsonNoQuotesError "\<[[:alpha:]][[:alnum:]]*\>"
+ syn match jsonTripleQuotesError /"""/
- " Syntax: An integer part of 0 followed by other digits is not allowed.
- syn match jsonNumError "-\=\<0\d\.\d*\>"
+ " Syntax: An integer part of 0 followed by other digits is not allowed.
+ syn match jsonNumError "-\=\<0\d\.\d*\>"
- " Syntax: Decimals smaller than one should begin with 0 (so .1 should be 0.1).
- syn match jsonNumError "\:\@<=[[:blank:]\r\n]*\zs\.\d\+"
+ " Syntax: Decimals smaller than one should begin with 0 (so .1 should be 0.1).
+ syn match jsonNumError "\:\@<=[[:blank:]\r\n]*\zs\.\d\+"
- " Syntax: No comments in JSON, see http://stackoverflow.com/questions/244777/can-i-comment-a-json-file
- syn match jsonCommentError "//.*"
- syn match jsonCommentError "\(/\*\)\|\(\*/\)"
+ " Syntax: No comments in JSON, see http://stackoverflow.com/questions/244777/can-i-comment-a-json-file
+ syn match jsonCommentError "//.*"
+ syn match jsonCommentError "\(/\*\)\|\(\*/\)"
- " Syntax: No semicolons in JSON
- syn match jsonSemicolonError ";"
+ " Syntax: No semicolons in JSON
+ syn match jsonSemicolonError ";"
- " Syntax: No trailing comma after the last element of arrays or objects
- syn match jsonTrailingCommaError ",\_s*[}\]]"
+ " Syntax: No trailing comma after the last element of arrays or objects
+ syn match jsonTrailingCommaError ",\_s*[}\]]"
- " Syntax: Watch out for missing commas between elements
- syn match jsonMissingCommaError /\("\|\]\|\d\)\zs\_s\+\ze"/
- syn match jsonMissingCommaError /\(\]\|\}\)\_s\+\ze"/ "arrays/objects as values
- syn match jsonMissingCommaError /}\_s\+\ze{/ "objects as elements in an array
- syn match jsonMissingCommaError /\(true\|false\)\_s\+\ze"/ "true/false as value
+ " Syntax: Watch out for missing commas between elements
+ syn match jsonMissingCommaError /\("\|\]\|\d\)\zs\_s\+\ze"/
+ syn match jsonMissingCommaError /\(\]\|\}\)\_s\+\ze"/ "arrays/objects as values
+ syn match jsonMissingCommaError /}\_s\+\ze{/ "objects as elements in an array
+ syn match jsonMissingCommaError /\(true\|false\)\_s\+\ze"/ "true/false as value
endif
" ********************************************** END OF ERROR WARNINGS
@@ -97,28 +92,28 @@ syn region jsonFold matchgroup=jsonBraces start="\[" end=/]\(\_s\+\ze"\)\@!/ tr
" Define the default highlighting.
if version >= 508 || !exists("did_json_syn_inits")
- hi def link jsonPadding Operator
- hi def link jsonString String
- hi def link jsonTest Label
- hi def link jsonEscape Special
- hi def link jsonNumber Delimiter
- hi def link jsonBraces Delimiter
- hi def link jsonNull Function
- hi def link jsonBoolean Delimiter
- hi def link jsonKeyword Label
-
- if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1)
- hi def link jsonNumError Error
- hi def link jsonCommentError Error
- hi def link jsonSemicolonError Error
- hi def link jsonTrailingCommaError Error
- hi def link jsonMissingCommaError Error
- hi def link jsonStringSQError Error
- hi def link jsonNoQuotesError Error
- hi def link jsonTripleQuotesError Error
+ hi def link jsonPadding Operator
+ hi def link jsonString String
+ hi def link jsonTest Label
+ hi def link jsonEscape Special
+ hi def link jsonNumber Delimiter
+ hi def link jsonBraces Delimiter
+ hi def link jsonNull Function
+ hi def link jsonBoolean Delimiter
+ hi def link jsonKeyword Label
+
+ if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1)
+ hi def link jsonNumError Error
+ hi def link jsonCommentError Error
+ hi def link jsonSemicolonError Error
+ hi def link jsonTrailingCommaError Error
+ hi def link jsonMissingCommaError Error
+ hi def link jsonStringSQError Error
+ hi def link jsonNoQuotesError Error
+ hi def link jsonTripleQuotesError Error
endif
- hi def link jsonQuote Quote
- hi def link jsonNoise Noise
+ hi def link jsonQuote Quote
+ hi def link jsonNoise Noise
endif
let b:current_syntax = "json"