mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04:00 
			
		
		
		
	fixes: #14653 Signed-off-by: ObserverOfTime <chronobserver@disroot.org> Signed-off-by: Christian Brabandt <cb@256bit.org>
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:	SubStation Alpha
 | |
| " Maintainer:	ObserverOfTime <chronobserver@disroot.org>
 | |
| " Filenames:	*.ass,*.ssa
 | |
| " Last Change:	2024 Apr 28
 | |
| 
 | |
| if exists('b:current_syntax')
 | |
|     finish
 | |
| endif
 | |
| 
 | |
| " Comments
 | |
| syn keyword ssaTodo TODO FIXME NOTE XXX contained
 | |
| syn match ssaComment /^\(;\|!:\).*$/ contains=ssaTodo,@Spell
 | |
| syn match ssaTextComment /{[^}]*}/ contained contains=@Spell
 | |
| 
 | |
| " Sections
 | |
| syn match ssaSection /^\[[a-zA-Z0-9+ ]\+\]$/
 | |
| 
 | |
| " Headers
 | |
| syn match ssaHeader /^[^;!:]\+:/ skipwhite nextgroup=ssaField
 | |
| 
 | |
| " Fields
 | |
| syn match ssaField /[^,]*\(,\|$\)/ contained skipwhite contains=ssaDelimiter,ssaTime nextgroup=ssaField
 | |
| 
 | |
| " Time
 | |
| syn match ssaTime /\d:\d\d:\d\d\.\d\d/ contained
 | |
| 
 | |
| " Delimiter
 | |
| syn match ssaDelimiter /,/ contained
 | |
| 
 | |
| " Dialogue
 | |
| syn match ssaDialogue /^Dialogue:/ transparent skipwhite nextgroup=ssaDialogueFields
 | |
| syn match ssaDialogueFields /\([^,]*,\)\{9\}/ contained transparent skipwhite contains=ssaField,ssaDelimiter nextgroup=ssaText
 | |
| 
 | |
| " Text
 | |
| syn match ssaText /.*$/ contained contains=@ssaTags,@Spell
 | |
| syn cluster ssaTags contains=ssaOverrideTag,ssaEscapeChar,ssaTextComment,ssaItalics,ssaBold,ssaUnderline,ssaStrikeout
 | |
| 
 | |
| " Override tags
 | |
| syn match ssaOverrideTag /{\\[^}]\+}/ contained contains=@NoSpell
 | |
| 
 | |
| " Special characters
 | |
| syn match ssaEscapeChar /\\[nNh{}]/ contained contains=@NoSpell
 | |
| 
 | |
| " Markup
 | |
| syn region ssaItalics start=/{\\i1}/ end=/{\\i0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
 | |
| syn region ssaBold start=/{\\b1}/ end=/{\\b0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
 | |
| syn region ssaUnderline start=/{\\u1}/ end=/{\\u0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
 | |
| syn region ssaStrikeout start=/{\\s1}/ end=/{\\s0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
 | |
| 
 | |
| hi def link ssaDelimiter Delimiter
 | |
| hi def link ssaComment Comment
 | |
| hi def link ssaEscapeChar SpecialChar
 | |
| hi def link ssaField String
 | |
| hi def link ssaHeader Label
 | |
| hi def link ssaSection StorageClass
 | |
| hi def link ssaOverrideTag Special
 | |
| hi def link ssaTextComment Comment
 | |
| hi def link ssaTime Number
 | |
| hi def link ssaTodo Todo
 | |
| 
 | |
| hi ssaBold cterm=bold gui=bold
 | |
| hi ssaItalics cterm=italic gui=italic
 | |
| hi ssaStrikeout cterm=strikethrough gui=strikethrough
 | |
| hi ssaUnderline cterm=underline gui=underline
 | |
| 
 | |
| let b:current_syntax = 'ssa'
 |