63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:	SubRip
 | |
| " Maintainer:	ObserverOfTime <chronobserver@disroot.org>
 | |
| " Filenames:	*.srt
 | |
| " Last Change:	2022 Sep 12
 | |
| 
 | |
| if exists('b:current_syntax')
 | |
|     finish
 | |
| endif
 | |
| 
 | |
| syn spell toplevel
 | |
| 
 | |
| syn cluster srtSpecial contains=srtBold,srtItalics,srtStrikethrough,srtUnderline,srtFont,srtTag,srtEscape
 | |
| 
 | |
| " Number
 | |
| syn match srtNumber /^\d\+$/ contains=@NoSpell
 | |
| 
 | |
| " Range
 | |
| syn match srtRange /\d\d:\d\d:\d\d[,.]\d\d\d --> \d\d:\d\d:\d\d[,.]\d\d\d/ skipwhite contains=srtArrow,srtTime nextgroup=srtCoordinates
 | |
| syn match srtArrow /-->/ contained contains=@NoSpell
 | |
| syn match srtTime /\d\d:\d\d:\d\d[,.]\d\d\d/ contained contains=@NoSpell
 | |
| syn match srtCoordinates /X1:\d\+ X2:\d\+ Y1:\d\+ Y2:\d\+/ contained contains=@NoSpell
 | |
| 
 | |
| " Bold
 | |
| syn region srtBold matchgroup=srtFormat start=+<b>+ end=+</b>+ contains=@srtSpecial
 | |
| syn region srtBold matchgroup=srtFormat start=+{b}+ end=+{/b}+ contains=@srtSpecial
 | |
| 
 | |
| " Italics
 | |
| syn region srtItalics matchgroup=srtFormat start=+<i>+ end=+</i>+ contains=@srtSpecial
 | |
| syn region srtItalics matchgroup=srtFormat start=+{i}+ end=+{/i}+ contains=@srtSpecial
 | |
| 
 | |
| " Strikethrough
 | |
| syn region srtStrikethrough matchgroup=srtFormat start=+<s>+ end=+</s>+ contains=@srtSpecial
 | |
| syn region srtStrikethrough matchgroup=srtFormat start=+{s}+ end=+{/s}+ contains=@srtSpecial
 | |
| 
 | |
| " Underline
 | |
| syn region srtUnderline matchgroup=srtFormat start=+<u>+ end=+</u>+ contains=@srtSpecial
 | |
| syn region srtUnderline matchgroup=srtFormat start=+{u}+ end=+{/u}+ contains=@srtSpecial
 | |
| 
 | |
| " Font
 | |
| syn region srtFont matchgroup=srtFormat start=+<font[^>]\{-}>+ end=+</font>+ contains=@srtSpecial
 | |
| 
 | |
| " ASS tags
 | |
| syn match srtTag /{\\[^}]\{1,}}/ contains=@NoSpell
 | |
| 
 | |
| " Special characters
 | |
| syn match srtEscape /\\[nNh]/ contains=@NoSpell
 | |
| 
 | |
| hi def link srtArrow Delimiter
 | |
| hi def link srtCoordinates Label
 | |
| hi def link srtEscape SpecialChar
 | |
| hi def link srtFormat Special
 | |
| hi def link srtNumber Number
 | |
| hi def link srtTag PreProc
 | |
| hi def link srtTime String
 | |
| 
 | |
| hi srtBold cterm=bold gui=bold
 | |
| hi srtItalics cterm=italic gui=italic
 | |
| hi srtStrikethrough cterm=strikethrough gui=strikethrough
 | |
| hi srtUnderline cterm=underline gui=underline
 | |
| 
 | |
| let b:current_syntax = 'srt'
 |