30324
|
1 " Vim syntax file
|
|
2 " Language: LyRiCs
|
|
3 " Maintainer: ObserverOfTime <chronobserver@disroot.org>
|
|
4 " Filenames: *.lrc
|
|
5 " Last Change: 2022 Sep 18
|
|
6
|
|
7 if exists('b:current_syntax')
|
|
8 finish
|
|
9 endif
|
|
10
|
|
11 let s:cpo_save = &cpoptions
|
|
12 set cpoptions&vim
|
|
13
|
|
14 syn case ignore
|
|
15
|
|
16 " Errors
|
|
17 syn match lrcError /^.\+$/
|
|
18
|
|
19 " ID tags
|
|
20 syn match lrcTag /^\s*\[\a\+:.\+\]\s*$/ contains=lrcTagName,lrcTagValue
|
|
21 syn match lrcTagName contained nextgroup=lrcTagValue
|
|
22 \ /\[\zs\(al\|ar\|au\|by\|encoding\|la\|id\|length\|offset\|re\|ti\|ve\)\ze:/
|
|
23 syn match lrcTagValue /:\zs.\+\ze\]/ contained
|
|
24
|
|
25 " Lyrics
|
|
26 syn match lrcLyricTime /^\s*\[\d\d:\d\d\.\d\d\]/
|
|
27 \ contains=lrcNumber nextgroup=lrcLyricLine
|
|
28 syn match lrcLyricLine /.*$/ contained contains=lrcWordTime,@Spell
|
|
29 syn match lrcWordTime /<\d\d:\d\d\.\d\d>/ contained contains=lrcNumber,@NoSpell
|
|
30 syn match lrcNumber /[+-]\=\d\+/ contained
|
|
31
|
|
32 hi def link lrcLyricTime Label
|
|
33 hi def link lrcNumber Number
|
|
34 hi def link lrcTag PreProc
|
|
35 hi def link lrcTagName Identifier
|
|
36 hi def link lrcTagValue String
|
|
37 hi def link lrcWordTime Special
|
|
38 hi def link lrcError Error
|
|
39
|
|
40 let b:current_syntax = 'lyrics'
|
|
41
|
|
42 let &cpoptions = s:cpo_save
|
|
43 unlet s:cpo_save
|