34 lines
1.4 KiB
VimL
34 lines
1.4 KiB
VimL
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
syn cluster jsonValue contains=jsonString,jsonNumber,jsonObject,jsonArray,jsonBoolean,jsonNull
|
|
|
|
syn region jsonString oneline matchgroup=jsonStringEnd start=+"+ skip=+\\"+ end=+"+ concealends contains=jsonCharacter contained
|
|
syn match jsonNumber '-\?\d\+\(\.\d\+\([eE][-+]\?\d\+\)\?\)\?' contained
|
|
syn region jsonObject fold matchgroup=jsonObjectEnd start='{' end='}' transparent contains=jsonName,jsonColon,jsonComma,@jsonValue
|
|
syn region jsonArray fold matchgroup=jsonArrayEnd start='\[' end='\]' transparent contains=jsonComma,@jsonValue
|
|
syn keyword jsonBoolean true false
|
|
syn keyword jsonNull null
|
|
|
|
syn match jsonCharacter +\\\(["\\\/bfnrt]\|u\x\x\x\x\)+ contained
|
|
syn region jsonName oneline matchgroup=jsonNameEnd start=+"+ skip=+\\"+ end=+"\ze:+ concealends contains=jsonCharacter contained
|
|
syn match jsonColon ':' contained
|
|
syn match jsonComma ',' contained
|
|
|
|
hi default link jsonString String
|
|
hi default link jsonStringEnd Conceal
|
|
hi default link jsonNumber Number
|
|
hi default link jsonObjectEnd Delimiter
|
|
hi default link jsonArrayEnd Delimiter
|
|
hi default link jsonBoolean Boolean
|
|
hi default link jsonNull Constant
|
|
|
|
hi default link jsonCharacter SpecialChar
|
|
hi default link jsonName Function
|
|
hi default link jsonNameEnd Conceal
|
|
hi default link jsonColon Delimiter
|
|
hi default link jsonComma Delimiter
|
|
|
|
let b:current_syntax = 'json'
|