Add json5 support, closes #256

This commit is contained in:
Adam Stankiewicz 2017-12-30 11:34:40 +01:00
parent f3556c1eca
commit 1541356fe1
No known key found for this signature in database
GPG Key ID: A62480DCEAC884DF
4 changed files with 63 additions and 0 deletions

View File

@ -79,6 +79,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [jasmine](https://github.com/glanotte/vim-jasmine) (syntax)
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, compiler, ftplugin, extras)
- [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax) (syntax, indent)
- [json5](https://github.com/GutenYe/json5.vim) (syntax)
- [json](https://github.com/elzr/vim-json) (syntax, indent, ftplugin)
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent)
- [jsx](https://github.com/mxw/vim-jsx) (after)

1
build
View File

@ -152,6 +152,7 @@ PACKS="
javascript:pangloss/vim-javascript:_JAVASCRIPT
jenkins:martinda/Jenkinsfile-vim-syntax
json:elzr/vim-json
json5:GutenYe/json5.vim
jst:briancollins/vim-jst
jsx:mxw/vim-jsx:_ALL
julia:JuliaEditorSupport/julia-vim

View File

@ -447,6 +447,11 @@ autocmd BufNewFile,BufRead *.geojson setlocal filetype=json
autocmd BufNewFile,BufRead *.template setlocal filetype=json
augroup END
augroup filetypedetect
" json5:GutenYe/json5.vim
au BufNewFile,BufRead *.json5 setfiletype json5
augroup END
augroup filetypedetect
" jst:briancollins/vim-jst
au BufNewFile,BufRead *.ejs set filetype=jst

56
syntax/json5.vim Normal file
View File

@ -0,0 +1,56 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'json5') == -1
" Syntax setup {{{1
if exists('b:current_syntax') && b:current_syntax == 'json5'
finish
endif
" Syntax: Strings {{{1
syn region json5String start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=json5Escape
syn region json5String start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=json5Escape
" Syntax: Escape sequences
syn match json5Escape "\\["\\/bfnrt]" contained
syn match json5Escape "\\u\x\{4}" contained
" Syntax: Numbers {{{1
syn match json5Number "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>"
syn keyword json5Number Infinity -Infinity
" Syntax: An integer part of 0 followed by other digits is not allowed.
syn match json5NumError "-\=\<0\d\.\d*\>"
" Syntax: Boolean {{{1
syn keyword json5Boolean true false
" Syntax: Null {{{1
syn keyword json5Null null
" Syntax: Braces {{{1
syn match json5Braces "[{}\[\]]"
syn match json5ObjAssign /@\?\%(\I\|\$\)\%(\i\|\$\)*\s*\ze::\@!/
" Syntax: Comment {{{1
syn region json5LineComment start=+\/\/+ end=+$+ keepend
syn region json5LineComment start=+^\s*\/\/+ skip=+\n\s*\/\/+ end=+$+ keepend fold
syn region json5Comment start="/\*" end="\*/" fold
" Define the default highlighting. {{{1
hi def link json5String String
hi def link json5ObjAssign Identifier
hi def link json5Escape Special
hi def link json5Number Number
hi def link json5Braces Operator
hi def link json5Null Function
hi def link json5Boolean Boolean
hi def link json5LineComment Comment
hi def link json5Comment Comment
hi def link json5NumError Error
if !exists('b:current_syntax')
let b:current_syntax = 'json5'
endif
" vim: fdm=marker
endif