ssa.vim (2355B)
1 " Vim syntax file 2 " Language: SubStation Alpha 3 " Maintainer: ObserverOfTime <chronobserver@disroot.org> 4 " Filenames: *.ass,*.ssa 5 " Last Change: 2024 Apr 28 6 7 if exists('b:current_syntax') 8 finish 9 endif 10 11 " Comments 12 syn keyword ssaTodo TODO FIXME NOTE XXX contained 13 syn match ssaComment /^\(;\|!:\).*$/ contains=ssaTodo,@Spell 14 syn match ssaTextComment /{[^}]*}/ contained contains=@Spell 15 16 " Sections 17 syn match ssaSection /^\[[a-zA-Z0-9+ ]\+\]$/ 18 19 " Headers 20 syn match ssaHeader /^[^;!:]\+:/ skipwhite nextgroup=ssaField 21 22 " Fields 23 syn match ssaField /[^,]*\(,\|$\)/ contained skipwhite contains=ssaDelimiter,ssaTime nextgroup=ssaField 24 25 " Time 26 syn match ssaTime /\d:\d\d:\d\d\.\d\d/ contained 27 28 " Delimiter 29 syn match ssaDelimiter /,/ contained 30 31 " Dialogue 32 syn match ssaDialogue /^Dialogue:/ transparent skipwhite nextgroup=ssaDialogueFields 33 syn match ssaDialogueFields /\([^,]*,\)\{9\}/ contained transparent skipwhite contains=ssaField,ssaDelimiter nextgroup=ssaText 34 35 " Text 36 syn match ssaText /.*$/ contained contains=@ssaTags,@Spell 37 syn cluster ssaTags contains=ssaOverrideTag,ssaEscapeChar,ssaTextComment,ssaItalics,ssaBold,ssaUnderline,ssaStrikeout 38 39 " Override tags 40 syn match ssaOverrideTag /{\\[^}]\+}/ contained contains=@NoSpell 41 42 " Special characters 43 syn match ssaEscapeChar /\\[nNh{}]/ contained contains=@NoSpell 44 45 " Markup 46 syn region ssaItalics start=/{\\i1}/ end=/{\\i0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell 47 syn region ssaBold start=/{\\b1}/ end=/{\\b0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell 48 syn region ssaUnderline start=/{\\u1}/ end=/{\\u0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell 49 syn region ssaStrikeout start=/{\\s1}/ end=/{\\s0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell 50 51 hi def link ssaDelimiter Delimiter 52 hi def link ssaComment Comment 53 hi def link ssaEscapeChar SpecialChar 54 hi def link ssaField String 55 hi def link ssaHeader Label 56 hi def link ssaSection StorageClass 57 hi def link ssaOverrideTag Special 58 hi def link ssaTextComment Comment 59 hi def link ssaTime Number 60 hi def link ssaTodo Todo 61 62 hi ssaBold cterm=bold gui=bold 63 hi ssaItalics cterm=italic gui=italic 64 hi ssaStrikeout cterm=strikethrough gui=strikethrough 65 hi ssaUnderline cterm=underline gui=underline 66 67 let b:current_syntax = 'ssa'