summaryrefslogtreecommitdiffstats
path: root/syntax/json.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2016-07-26 13:50:28 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2016-07-26 13:52:30 +0200
commitacd25ccf95f25ce2d93c92a45c9229531539249d (patch)
tree074d27c8f77c40c4f91c7fdc8db6ad9b0e91e4f1 /syntax/json.vim
parent7dd62806a06af3cf2410cd8a4f83205269f279de (diff)
downloadvim-polyglot-acd25ccf95f25ce2d93c92a45c9229531539249d.tar.gz
vim-polyglot-acd25ccf95f25ce2d93c92a45c9229531539249d.zip
Switch to elzr for json syntax, and disable conceal by default
Diffstat (limited to 'syntax/json.vim')
-rw-r--r--syntax/json.vim80
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