mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00: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
 |