vim/syntax/json.vim

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'