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