json5.vim (2555B)
1 " Vim syntax file 2 " Language: JSON5 3 " Maintainer: Mazunki Hoksaas rolferen@gmail.com 4 " Previous Maintainer: Guten Ye <ywzhaifei@gmail.com> 5 " Last Change: 2019 Apr 1 6 " Version: vim9.0-1 7 " URL: https://github.com/json5/json5 8 9 " Syntax setup 10 if exists('b:current_syntax') && b:current_syntax == 'json5' 11 finish 12 endif 13 14 " Numbers 15 syn match json5Number "[-+]\=\%(0\|[1-9]\d*\)\%(\.\d*\)\=\%([eE][-+]\=\d\+\)\=" 16 syn match json5Number "[-+]\=\%(\.\d\+\)\%([eE][-+]\=\d\+\)\=" 17 syn match json5Number "[-+]\=0[xX]\x*" 18 syn match json5Number "[-+]\=Infinity\|NaN" 19 20 " An integer part of 0 followed by other digits is not allowed 21 syn match json5NumError "[-+]\=0\d\(\d\|\.\)*" 22 23 " A hexadecimal number cannot have a fractional part 24 syn match json5NumError "[-+]\=0x\x*\.\x*" 25 26 " Strings 27 syn region json5String start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=json5Escape,@Spell 28 syn region json5String start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=json5Escape,@Spell 29 30 " Escape sequences 31 syn match json5Escape "\\['\"\\bfnrtv]" contained 32 syn match json5Escape "\\u\x\{4}" contained 33 34 " Boolean 35 syn keyword json5Boolean true false 36 37 " Null 38 syn keyword json5Null null 39 40 " Delimiters and Operators 41 syn match json5Delimiter "," 42 syn match json5Operator ":" 43 44 " Braces 45 syn match json5Braces "[{}\[\]]" 46 47 " Keys 48 syn match json5Key /@\?\%(\I\|\$\)\%(\i\|\$\)*\s*\ze::\@!/ contains=@Spell 49 syn match json5Key /"\([^"]\|\\"\)\{-}"\ze\s*:/ contains=json5Escape,@Spell 50 51 " Comment 52 syn region json5LineComment start=+\/\/+ end=+$+ keepend contains=@Spell,json5Todo 53 syn region json5LineComment start=+^\s*\/\/+ skip=+\n\s*\/\/+ end=+$+ keepend fold contains=@Spell,json5Todo 54 syn region json5Comment start="/\*" end="\*/" fold contains=@Spell,json5Todo 55 56 syn keyword json5Todo contained TODO FIXME XXX 57 58 " Define the default highlighting 59 hi def link json5String String 60 hi def link json5Key Identifier 61 hi def link json5Escape Special 62 hi def link json5Number Number 63 hi def link json5Delimiter Delimiter 64 hi def link json5Operator Operator 65 hi def link json5Braces Delimiter 66 hi def link json5Null Keyword 67 hi def link json5Boolean Boolean 68 hi def link json5LineComment Comment 69 hi def link json5Comment Comment 70 hi def link json5NumError Error 71 hi def link json5Todo Todo 72 73 if !exists('b:current_syntax') 74 let b:current_syntax = 'json5' 75 endif