diff options
Diffstat (limited to 'syntax')
| -rw-r--r-- | syntax/json.vim | 80 | 
1 files changed, 49 insertions, 31 deletions
| diff --git a/syntax/json.vim b/syntax/json.vim index 25989ead..48bc18e1 100644 --- a/syntax/json.vim +++ b/syntax/json.vim @@ -5,6 +5,10 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'json') == -1  " Maintainer:	Eli Parra <eli@elzr.com> 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 +  if !exists("main_syntax")    if version < 600      syntax clear @@ -16,10 +20,16 @@ endif  syntax match   jsonNoise           /\%(:\|,\)/ +" NOTE that for the concealing to work your conceallevel should be set to 2 +  " Syntax: Strings  " Separated into a match and region because a region by itself is always greedy  syn match  jsonStringMatch /"\([^"]\|\\\"\)\+"\ze[[:blank:]\r\n]*[,}\]]/ contains=jsonString -syn region  jsonString oneline matchgroup=jsonQuote start=/"/  skip=/\\\\\|\\"/  end=/"/ concealends contains=jsonEscape contained +if has('conceal') && g:vim_json_syntax_conceal == 1 +	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 +endif  " Syntax: JSON does not allow strings with single quotes, unlike JavaScript.  syn region  jsonStringSQError oneline  start=+'+  skip=+\\\\\|\\"+  end=+'+ @@ -27,7 +37,11 @@ syn region  jsonStringSQError oneline  start=+'+  skip=+\\\\\|\\"+  end=+'+  " Syntax: JSON Keywords  " Separated into a match and region because a region by itself is always greedy  syn match  jsonKeywordMatch /"\([^"]\|\\\"\)\+"[[:blank:]\r\n]*\:/ contains=jsonKeyword -syn region  jsonKeyword matchgroup=jsonQuote start=/"/  end=/"\ze[[:blank:]\r\n]*\:/ contains=jsonEscape contained +if has('conceal') && g:vim_json_syntax_conceal == 1 +   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 +endif  " Syntax: Escape sequences  syn match   jsonEscape    "\\["\\/bfnrt]" contained @@ -37,31 +51,33 @@ syn match   jsonEscape    "\\u\x\{4}" contained  syn match   jsonNumber    "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>\ze[[:blank:]\r\n]*[,}\]]"  " ERROR WARNINGS ********************************************** -" Syntax: Strings should always be enclosed with quotes. -syn match   jsonNoQuotesError  "\<[[:alpha:]][[:alnum:]]*\>" -syn match   jsonTripleQuotesError  /"""/ +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: 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  " Allowances for JSONP: function call at the beginning of the file, @@ -87,20 +103,22 @@ if version >= 508 || !exists("did_json_syn_inits")    hi def link jsonString		String    hi def link jsonTest			Label    hi def link jsonEscape		Special -  hi def link jsonNumber		Number +  hi def link jsonNumber		Delimiter    hi def link jsonBraces		Delimiter    hi def link jsonNull			Function -  hi def link jsonBoolean		Boolean +  hi def link jsonBoolean		Delimiter    hi def link jsonKeyword		Label -  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 +	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  endif | 
