mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +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
 | 
