blob: 12fb264d8e96e7c572549796178b3f7fd0bc230f [file] [log] [blame]
Bram Moolenaar9712ff12022-09-18 13:04:22 +01001" Vim syntax file
2" Language: SubRip
3" Maintainer: ObserverOfTime <chronobserver@disroot.org>
4" Filenames: *.srt
5" Last Change: 2022 Sep 12
6
7if exists('b:current_syntax')
8 finish
9endif
10
11syn spell toplevel
12
13syn cluster srtSpecial contains=srtBold,srtItalics,srtStrikethrough,srtUnderline,srtFont,srtTag,srtEscape
14
15" Number
16syn match srtNumber /^\d\+$/ contains=@NoSpell
17
18" Range
19syn 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
20syn match srtArrow /-->/ contained contains=@NoSpell
21syn match srtTime /\d\d:\d\d:\d\d[,.]\d\d\d/ contained contains=@NoSpell
22syn match srtCoordinates /X1:\d\+ X2:\d\+ Y1:\d\+ Y2:\d\+/ contained contains=@NoSpell
23
24" Bold
25syn region srtBold matchgroup=srtFormat start=+<b>+ end=+</b>+ contains=@srtSpecial
26syn region srtBold matchgroup=srtFormat start=+{b}+ end=+{/b}+ contains=@srtSpecial
27
28" Italics
29syn region srtItalics matchgroup=srtFormat start=+<i>+ end=+</i>+ contains=@srtSpecial
30syn region srtItalics matchgroup=srtFormat start=+{i}+ end=+{/i}+ contains=@srtSpecial
31
32" Strikethrough
33syn region srtStrikethrough matchgroup=srtFormat start=+<s>+ end=+</s>+ contains=@srtSpecial
34syn region srtStrikethrough matchgroup=srtFormat start=+{s}+ end=+{/s}+ contains=@srtSpecial
35
36" Underline
37syn region srtUnderline matchgroup=srtFormat start=+<u>+ end=+</u>+ contains=@srtSpecial
38syn region srtUnderline matchgroup=srtFormat start=+{u}+ end=+{/u}+ contains=@srtSpecial
39
40" Font
41syn region srtFont matchgroup=srtFormat start=+<font[^>]\{-}>+ end=+</font>+ contains=@srtSpecial
42
43" ASS tags
44syn match srtTag /{\\[^}]\{1,}}/ contains=@NoSpell
45
46" Special characters
47syn match srtEscape /\\[nNh]/ contains=@NoSpell
48
49hi def link srtArrow Delimiter
50hi def link srtCoordinates Label
51hi def link srtEscape SpecialChar
52hi def link srtFormat Special
53hi def link srtNumber Number
54hi def link srtTag PreProc
55hi def link srtTime String
56
57hi srtBold cterm=bold gui=bold
58hi srtItalics cterm=italic gui=italic
59hi srtStrikethrough cterm=strikethrough gui=strikethrough
60hi srtUnderline cterm=underline gui=underline
61
62let b:current_syntax = 'srt'