mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
45 lines
1.7 KiB
VimL
45 lines
1.7 KiB
VimL
|
" Vim syntax file
|
||
|
" Language: JSONC (JSON with Comments)
|
||
|
" Original Author: Izhak Jakov <izhak724@gmail.com>
|
||
|
" Acknowledgement: Based off of vim-jsonc maintained by Kevin Locke <kevin@kevinlocke.name>
|
||
|
" https://github.com/kevinoid/vim-jsonc
|
||
|
" License: MIT
|
||
|
" Last Change: 2021-07-01
|
||
|
|
||
|
" Ensure syntax is loaded once, unless nested inside another (main) syntax
|
||
|
" For description of main_syntax, see https://stackoverflow.com/q/16164549
|
||
|
if !exists('g:main_syntax')
|
||
|
if exists('b:current_syntax') && b:current_syntax ==# 'jsonc'
|
||
|
finish
|
||
|
endif
|
||
|
let g:main_syntax = 'jsonc'
|
||
|
endif
|
||
|
|
||
|
" Based on vim-json syntax
|
||
|
runtime! syntax/json.vim
|
||
|
|
||
|
" Remove syntax group for comments treated as errors
|
||
|
if !exists("g:vim_json_warnings") || g:vim_json_warnings
|
||
|
syn clear jsonCommentError
|
||
|
endif
|
||
|
|
||
|
syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze\(\_s*\/\/.*\_s*\)*[}\]]/ contains=jsonString
|
||
|
syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze\_s*\/\*\_.*\*\/\_s*[}\]]/ contains=jsonString
|
||
|
syn match jsonTrailingCommaError /\(,\)\+\ze\(\_s*\/\/.*\_s*\)*[}\]]/
|
||
|
syn match jsonTrailingCommaError /\(,\)\+\ze\_s*\/\*\_.*\*\/\_s*[}\]]/
|
||
|
|
||
|
" Define syntax matching comments and their contents
|
||
|
syn keyword jsonCommentTodo FIXME NOTE TBD TODO XXX
|
||
|
syn region jsonLineComment start=+\/\/+ end=+$+ contains=@Spell,jsonCommentTodo keepend
|
||
|
syn region jsonComment start='/\*' end='\*/' contains=@Spell,jsonCommentTodo fold
|
||
|
|
||
|
" Link comment syntax comment to highlighting
|
||
|
hi! def link jsonLineComment Comment
|
||
|
hi! def link jsonComment Comment
|
||
|
|
||
|
" Set/Unset syntax to avoid duplicate inclusion and correctly handle nesting
|
||
|
let b:current_syntax = 'jsonc'
|
||
|
if g:main_syntax ==# 'jsonc'
|
||
|
unlet g:main_syntax
|
||
|
endif
|