xref: /vim-8.2.3635/runtime/syntax/cdrtoc.vim (revision 214641f7)
179166c43SBram Moolenaar" Vim syntax file
279166c43SBram Moolenaar" Language:             cdrdao(1) TOC file
3*214641f7SBram Moolenaar" Previous Maintainer:  Nikolai Weibull <[email protected]>
479166c43SBram Moolenaar" Latest Revision:      2007-05-10
579166c43SBram Moolenaar
679166c43SBram Moolenaarif exists("b:current_syntax")
779166c43SBram Moolenaar  finish
879166c43SBram Moolenaarendif
979166c43SBram Moolenaar
1079166c43SBram Moolenaarlet s:cpo_save = &cpo
1179166c43SBram Moolenaarset cpo&vim
1279166c43SBram Moolenaar
1379166c43SBram Moolenaarsyn keyword cdrtocTodo
1479166c43SBram Moolenaar      \ contained
1579166c43SBram Moolenaar      \ TODO
1679166c43SBram Moolenaar      \ FIXME
1779166c43SBram Moolenaar      \ XXX
1879166c43SBram Moolenaar      \ NOTE
1979166c43SBram Moolenaar
2079166c43SBram Moolenaarsyn cluster cdrtocCommentContents
2179166c43SBram Moolenaar      \ contains=
2279166c43SBram Moolenaar      \   cdrtocTodo,
2379166c43SBram Moolenaar      \   @Spell
2479166c43SBram Moolenaar
2579166c43SBram Moolenaarsyn cluster cdrtocHeaderFollowsInitial
2679166c43SBram Moolenaar      \ contains=
2779166c43SBram Moolenaar      \   cdrtocHeaderCommentInitial,
2879166c43SBram Moolenaar      \   cdrtocHeaderCatalog,
2979166c43SBram Moolenaar      \   cdrtocHeaderTOCType,
3079166c43SBram Moolenaar      \   cdrtocHeaderCDText,
3179166c43SBram Moolenaar      \   cdrtocTrack
3279166c43SBram Moolenaar
3379166c43SBram Moolenaarsyn match   cdrtocHeaderBegin
3479166c43SBram Moolenaar      \ nextgroup=@cdrtocHeaderFollowsInitial
3579166c43SBram Moolenaar      \ skipwhite skipempty
3679166c43SBram Moolenaar      \ '\%^'
3779166c43SBram Moolenaar
3879166c43SBram Moolenaarlet s:mmssff_pattern = '\%([0-5]\d\|\d\):\%([0-5]\d\|\d\):\%([0-6]\d\|7[0-5]\|\d\)\>'
3979166c43SBram Moolenaarlet s:byte_pattern = '\<\%([01]\=\d\{1,2}\|2\%([0-4]\d\|5[0-5]\)\)\>'
4079166c43SBram Moolenaarlet s:length_pattern = '\%(\%([0-5]\d\|\d\):\%([0-5]\d\|\d\):\%([0-6]\d\|7[0-5]\|\d\)\|\d\+\)\>'
4179166c43SBram Moolenaar
4279166c43SBram Moolenaarfunction s:def_comment(name, nextgroup)
4379166c43SBram Moolenaar  execute 'syn match' a:name
4479166c43SBram Moolenaar        \ 'nextgroup=' . a:nextgroup . ',' . a:name
4579166c43SBram Moolenaar        \ 'skipwhite skipempty'
4679166c43SBram Moolenaar        \ 'contains=@cdrtocCommentContents'
4779166c43SBram Moolenaar        \ 'contained'
4879166c43SBram Moolenaar        \ "'//.*$'"
4979166c43SBram Moolenaar  execute 'hi def link' a:name 'cdrtocComment'
5079166c43SBram Moolenaarendfunction
5179166c43SBram Moolenaar
5279166c43SBram Moolenaarfunction s:def_keywords(name, nextgroup, keywords)
5379166c43SBram Moolenaar  let comment_group = a:name . 'FollowComment'
5479166c43SBram Moolenaar  execute 'syn keyword' a:name
5579166c43SBram Moolenaar        \ 'nextgroup=' . a:nextgroup . ',' . comment_group
5679166c43SBram Moolenaar        \ 'skipwhite skipempty'
5779166c43SBram Moolenaar        \ 'contained'
5879166c43SBram Moolenaar        \ join(a:keywords)
5979166c43SBram Moolenaar
6079166c43SBram Moolenaar  call s:def_comment(comment_group, a:nextgroup)
6179166c43SBram Moolenaarendfunction
6279166c43SBram Moolenaar
6379166c43SBram Moolenaarfunction s:def_keyword(name, nextgroup, keyword)
6479166c43SBram Moolenaar  call s:def_keywords(a:name, a:nextgroup, [a:keyword])
6579166c43SBram Moolenaarendfunction
6679166c43SBram Moolenaar
6779166c43SBram Moolenaar" NOTE: Pattern needs to escape any “@”s.
6879166c43SBram Moolenaarfunction s:def_match(name, nextgroup, pattern)
6979166c43SBram Moolenaar  let comment_group = a:name . 'FollowComment'
7079166c43SBram Moolenaar  execute 'syn match' a:name
7179166c43SBram Moolenaar        \ 'nextgroup=' . a:nextgroup . ',' . comment_group
7279166c43SBram Moolenaar        \ 'skipwhite skipempty'
7379166c43SBram Moolenaar        \ 'contained'
7479166c43SBram Moolenaar        \ '@' . a:pattern . '@'
7579166c43SBram Moolenaar
7679166c43SBram Moolenaar  call s:def_comment(comment_group, a:nextgroup)
7779166c43SBram Moolenaarendfunction
7879166c43SBram Moolenaar
7979166c43SBram Moolenaarfunction s:def_region(name, nextgroup, start, skip, end, matchgroup, contains)
8079166c43SBram Moolenaar  let comment_group = a:name . 'FollowComment'
8179166c43SBram Moolenaar  execute 'syn region' a:name
8279166c43SBram Moolenaar        \ 'nextgroup=' . a:nextgroup . ',' . comment_group
8379166c43SBram Moolenaar        \ 'skipwhite skipempty'
8479166c43SBram Moolenaar        \ 'contained'
8579166c43SBram Moolenaar        \ 'matchgroup=' . a:matchgroup
8679166c43SBram Moolenaar        \ 'contains=' . a:contains
8779166c43SBram Moolenaar        \ 'start=@' . a:start . '@'
8879166c43SBram Moolenaar        \ (a:skip != "" ? ('skip=@' . a:skip . '@') : "")
8979166c43SBram Moolenaar        \ 'end=@' . a:end . '@'
9079166c43SBram Moolenaar
9179166c43SBram Moolenaar  call s:def_comment(comment_group, a:nextgroup)
9279166c43SBram Moolenaarendfunction
9379166c43SBram Moolenaar
9479166c43SBram Moolenaarcall s:def_comment('cdrtocHeaderCommentInitial', '@cdrtocHeaderFollowsInitial')
9579166c43SBram Moolenaar
9679166c43SBram Moolenaarcall s:def_keyword('cdrtocHeaderCatalog', 'cdrtocHeaderCatalogNumber', 'CATALOG')
9779166c43SBram Moolenaar
9879166c43SBram Moolenaarcall s:def_match('cdrtocHeaderCatalogNumber', '@cdrtocHeaderFollowsInitial', '"\d\{13\}"')
9979166c43SBram Moolenaar
10079166c43SBram Moolenaarcall s:def_keywords('cdrtocHeaderTOCType', '@cdrtocHeaderFollowsInitial', ['CD_DA', 'CD_ROM', 'CD_ROM_XA'])
10179166c43SBram Moolenaar
10279166c43SBram Moolenaarcall s:def_keyword('cdrtocHeaderCDText', 'cdrtocHeaderCDTextStart', 'CD_TEXT')
10379166c43SBram Moolenaar
10479166c43SBram Moolenaar" TODO: Actually, language maps aren’t required by TocParser.g, but let’s keep
10579166c43SBram Moolenaar" things simple (and in agreement with what the manual page says).
10679166c43SBram Moolenaarcall s:def_match('cdrtocHeaderCDTextStart', 'cdrtocHeaderCDTextLanguageMap', '{')
10779166c43SBram Moolenaar
10879166c43SBram Moolenaarcall s:def_keyword('cdrtocHeaderCDTextLanguageMap', 'cdrtocHeaderLanguageMapStart', 'LANGUAGE_MAP')
10979166c43SBram Moolenaar
11079166c43SBram Moolenaarcall s:def_match('cdrtocHeaderLanguageMapStart', 'cdrtocHeaderLanguageMapLanguageNumber', '{')
11179166c43SBram Moolenaar
11279166c43SBram Moolenaarcall s:def_match('cdrtocHeaderLanguageMapLanguageNumber', 'cdrtocHeaderLanguageMapColon', '\<[0-7]\>')
11379166c43SBram Moolenaar
11479166c43SBram Moolenaarcall s:def_match('cdrtocHeaderLanguageMapColon', 'cdrtocHeaderLanguageMapCountryCode,cdrtocHeaderLanguageMapCountryCodeName', ':')
11579166c43SBram Moolenaar
11679166c43SBram Moolenaarsyn cluster cdrtocHeaderLanguageMapCountryCodeFollow
11779166c43SBram Moolenaar      \ contains=
11879166c43SBram Moolenaar      \   cdrtocHeaderLanguageMapLanguageNumber,
11979166c43SBram Moolenaar      \   cdrtocHeaderLanguageMapEnd
12079166c43SBram Moolenaar
12179166c43SBram Moolenaarcall s:def_match('cdrtocHeaderLanguageMapCountryCode',
12279166c43SBram Moolenaar               \ '@cdrtocHeaderLanguageMapCountryCodeFollow',
12379166c43SBram Moolenaar               \ s:byte_pattern)
12479166c43SBram Moolenaar
12579166c43SBram Moolenaarcall s:def_keyword('cdrtocHeaderLanguageMapCountryCodeName',
12679166c43SBram Moolenaar                 \ '@cdrtocHeaderLanguageMapCountryCodeFollow',
12779166c43SBram Moolenaar                 \ 'EN')
12879166c43SBram Moolenaar
12979166c43SBram Moolenaarcall s:def_match('cdrtocHeaderLanguageMapEnd',
13079166c43SBram Moolenaar               \ 'cdrtocHeaderLanguage,cdrtocHeaderCDTextEnd',
13179166c43SBram Moolenaar               \ '}')
13279166c43SBram Moolenaar
13379166c43SBram Moolenaarcall s:def_keyword('cdrtocHeaderLanguage', 'cdrtocHeaderLanguageNumber', 'LANGUAGE')
13479166c43SBram Moolenaar
13579166c43SBram Moolenaarcall s:def_match('cdrtocHeaderLanguageNumber', 'cdrtocHeaderLanguageStart', '\<[0-7]\>')
13679166c43SBram Moolenaar
13779166c43SBram Moolenaarcall s:def_match('cdrtocHeaderLanguageStart',
13879166c43SBram Moolenaar               \ 'cdrtocHeaderCDTextItem,cdrtocHeaderLanguageEnd',
13979166c43SBram Moolenaar               \ '{')
14079166c43SBram Moolenaar
14179166c43SBram Moolenaarsyn cluster cdrtocHeaderCDTextData
14279166c43SBram Moolenaar      \ contains=
14379166c43SBram Moolenaar      \   cdrtocHeaderCDTextDataString,
14479166c43SBram Moolenaar      \   cdrtocHeaderCDTextDataBinaryStart
14579166c43SBram Moolenaar
14679166c43SBram Moolenaarcall s:def_keywords('cdrtocHeaderCDTextItem',
14779166c43SBram Moolenaar                  \ '@cdrtocHeaderCDTextData',
14879166c43SBram Moolenaar                  \ ['TITLE', 'PERFORMER', 'SONGWRITER', 'COMPOSER',
14979166c43SBram Moolenaar                  \  'ARRANGER', 'MESSAGE', 'DISC_ID', 'GENRE', 'TOC_INFO1',
15079166c43SBram Moolenaar                  \  'TOC_INFO2', 'UPC_EAN', 'ISRC', 'SIZE_INFO'])
15179166c43SBram Moolenaar
15279166c43SBram Moolenaarcall s:def_region('cdrtocHeaderCDTextDataString',
15379166c43SBram Moolenaar                \ 'cdrtocHeaderCDTextItem,cdrtocHeaderLanguageEnd',
15479166c43SBram Moolenaar                \ '"',
15579166c43SBram Moolenaar                \ '\\\\\|\\"',
15679166c43SBram Moolenaar                \ '"',
15779166c43SBram Moolenaar                \ 'cdrtocHeaderCDTextDataStringDelimiters',
15879166c43SBram Moolenaar                \ 'cdrtocHeaderCDTextDataStringSpecialChar')
15979166c43SBram Moolenaar
16079166c43SBram Moolenaarsyn match   cdrtocHeaderCDTextDataStringSpecialChar
16179166c43SBram Moolenaar      \ contained
16279166c43SBram Moolenaar      \ display
16379166c43SBram Moolenaar      \ '\\\%(\o\o\o\|["\\]\)'
16479166c43SBram Moolenaar
16579166c43SBram Moolenaarcall s:def_match('cdrtocHeaderCDTextDataBinaryStart',
16679166c43SBram Moolenaar               \ 'cdrtocHeaderCDTextDataBinaryInteger',
16779166c43SBram Moolenaar               \ '{')
16879166c43SBram Moolenaar
16979166c43SBram Moolenaarcall s:def_match('cdrtocHeaderCDTextDataBinaryInteger',
17079166c43SBram Moolenaar               \ 'cdrtocHeaderCDTextDataBinarySeparator,cdrtocHeaderCDTextDataBinaryEnd',
17179166c43SBram Moolenaar               \ s:byte_pattern)
17279166c43SBram Moolenaar
17379166c43SBram Moolenaarcall s:def_match('cdrtocHeaderCDTextDataBinarySeparator',
17479166c43SBram Moolenaar               \ 'cdrtocHeaderCDTextDataBinaryInteger',
17579166c43SBram Moolenaar               \ ',')
17679166c43SBram Moolenaar
17779166c43SBram Moolenaarcall s:def_match('cdrtocHeaderCDTextDataBinaryEnd',
17879166c43SBram Moolenaar               \ 'cdrtocHeaderCDTextItem,cdrtocHeaderLanguageEnd',
17979166c43SBram Moolenaar               \ '}')
18079166c43SBram Moolenaar
18179166c43SBram Moolenaarcall s:def_match('cdrtocHeaderLanguageEnd',
18279166c43SBram Moolenaar               \ 'cdrtocHeaderLanguage,cdrtocHeaderCDTextEnd',
18379166c43SBram Moolenaar               \ '}')
18479166c43SBram Moolenaar
18579166c43SBram Moolenaarcall s:def_match('cdrtocHeaderCDTextEnd',
18679166c43SBram Moolenaar               \ 'cdrtocTrack',
18779166c43SBram Moolenaar               \ '}')
18879166c43SBram Moolenaar
18979166c43SBram Moolenaarsyn cluster cdrtocTrackFollow
19079166c43SBram Moolenaar      \ contains=
19179166c43SBram Moolenaar      \   @cdrtocTrackFlags,
19279166c43SBram Moolenaar      \   cdrtocTrackCDText,
19379166c43SBram Moolenaar      \   cdrtocTrackPregap,
19479166c43SBram Moolenaar      \   @cdrtocTrackContents
19579166c43SBram Moolenaar
19679166c43SBram Moolenaarcall s:def_keyword('cdrtocTrack', 'cdrtocTrackMode', 'TRACK')
19779166c43SBram Moolenaar
19879166c43SBram Moolenaarcall s:def_keywords('cdrtocTrackMode',
19979166c43SBram Moolenaar                  \ 'cdrtocTrackSubChannelMode,@cdrtocTrackFollow',
20079166c43SBram Moolenaar                  \ ['AUDIO', 'MODE1', 'MODE1_RAW', 'MODE2', 'MODE2_FORM1',
20179166c43SBram Moolenaar                  \  'MODE2_FORM2', 'MODE2_FORM_MIX', 'MODE2_RAW'])
20279166c43SBram Moolenaar
20379166c43SBram Moolenaarcall s:def_keywords('cdrtocTrackSubChannelMode',
20479166c43SBram Moolenaar                  \ '@cdrtocTrackFollow',
20579166c43SBram Moolenaar                  \ ['RW', 'RW_RAW'])
20679166c43SBram Moolenaar
20779166c43SBram Moolenaarsyn cluster cdrtocTrackFlags
20879166c43SBram Moolenaar      \ contains=
20979166c43SBram Moolenaar      \   cdrtocTrackFlagNo,
21079166c43SBram Moolenaar      \   cdrtocTrackFlagCopy,
21179166c43SBram Moolenaar      \   cdrtocTrackFlagPreEmphasis,
21279166c43SBram Moolenaar      \   cdrtocTrackFlag
21379166c43SBram Moolenaar
21479166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackFlagNo',
21579166c43SBram Moolenaar                 \ 'cdrtocTrackFlagCopy,cdrtocTrackFlagPreEmphasis',
21679166c43SBram Moolenaar                 \ 'NO')
21779166c43SBram Moolenaar
21879166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackFlagCopy', '@cdrtocTrackFollow', 'COPY')
21979166c43SBram Moolenaar
22079166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackFlagPreEmphasis', '@cdrtocTrackFollow', 'PRE_EMPHASIS')
22179166c43SBram Moolenaar
22279166c43SBram Moolenaarcall s:def_keywords('cdrtocTrackFlag',
22379166c43SBram Moolenaar                  \ '@cdrtocTrackFollow',
22479166c43SBram Moolenaar                  \ ['TWO_CHANNEL_AUDIO', 'FOUR_CHANNEL_AUDIO'])
22579166c43SBram Moolenaar
22679166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackFlag', 'cdrtocTrackISRC', 'ISRC')
22779166c43SBram Moolenaar
22879166c43SBram Moolenaarcall s:def_match('cdrtocTrackISRC',
22979166c43SBram Moolenaar               \ '@cdrtocTrackFollow',
23079166c43SBram Moolenaar               \ '"[[:upper:][:digit:]]\{5}\d\{7}"')
23179166c43SBram Moolenaar
23279166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackCDText', 'cdrtocTrackCDTextStart', 'CD_TEXT')
23379166c43SBram Moolenaar
23479166c43SBram Moolenaarcall s:def_match('cdrtocTrackCDTextStart', 'cdrtocTrackCDTextLanguage', '{')
23579166c43SBram Moolenaar
23679166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackCDTextLanguage', 'cdrtocTrackCDTextLanguageNumber', 'LANGUAGE')
23779166c43SBram Moolenaar
23879166c43SBram Moolenaarcall s:def_match('cdrtocTrackCDTextLanguageNumber', 'cdrtocTrackCDTextLanguageStart', '\<[0-7]\>')
23979166c43SBram Moolenaar
24079166c43SBram Moolenaarcall s:def_match('cdrtocTrackCDTextLanguageStart',
24179166c43SBram Moolenaar               \ 'cdrtocTrackCDTextItem,cdrtocTrackCDTextLanguageEnd',
24279166c43SBram Moolenaar               \ '{')
24379166c43SBram Moolenaar
24479166c43SBram Moolenaarsyn cluster cdrtocTrackCDTextData
24579166c43SBram Moolenaar      \ contains=
24679166c43SBram Moolenaar      \   cdrtocTrackCDTextDataString,
24779166c43SBram Moolenaar      \   cdrtocTrackCDTextDataBinaryStart
24879166c43SBram Moolenaar
24979166c43SBram Moolenaarcall s:def_keywords('cdrtocTrackCDTextItem',
25079166c43SBram Moolenaar                  \ '@cdrtocTrackCDTextData',
25179166c43SBram Moolenaar                  \ ['TITLE', 'PERFORMER', 'SONGWRITER', 'COMPOSER', 'ARRANGER',
25279166c43SBram Moolenaar                  \  'MESSAGE', 'ISRC'])
25379166c43SBram Moolenaar
25479166c43SBram Moolenaarcall s:def_region('cdrtocTrackCDTextDataString',
25579166c43SBram Moolenaar                \ 'cdrtocTrackCDTextItem,cdrtocTrackCDTextLanguageEnd',
25679166c43SBram Moolenaar                \ '"',
25779166c43SBram Moolenaar                \ '\\\\\|\\"',
25879166c43SBram Moolenaar                \ '"',
25979166c43SBram Moolenaar                \ 'cdrtocTrackCDTextDataStringDelimiters',
26079166c43SBram Moolenaar                \ 'cdrtocTrackCDTextDataStringSpecialChar')
26179166c43SBram Moolenaar
26279166c43SBram Moolenaarsyn match   cdrtocTrackCDTextDataStringSpecialChar
26379166c43SBram Moolenaar      \ contained
26479166c43SBram Moolenaar      \ display
26579166c43SBram Moolenaar      \ '\\\%(\o\o\o\|["\\]\)'
26679166c43SBram Moolenaar
26779166c43SBram Moolenaarcall s:def_match('cdrtocTrackCDTextDataBinaryStart',
26879166c43SBram Moolenaar               \ 'cdrtocTrackCDTextDataBinaryInteger',
26979166c43SBram Moolenaar               \ '{')
27079166c43SBram Moolenaar
27179166c43SBram Moolenaarcall s:def_match('cdrtocTrackCDTextDataBinaryInteger',
27279166c43SBram Moolenaar               \ 'cdrtocTrackCDTextDataBinarySeparator,cdrtocTrackCDTextDataBinaryEnd',
27379166c43SBram Moolenaar               \ s:byte_pattern)
27479166c43SBram Moolenaar
27579166c43SBram Moolenaarcall s:def_match('cdrtocTrackCDTextDataBinarySeparator',
27679166c43SBram Moolenaar               \ 'cdrtocTrackCDTextDataBinaryInteger',
27779166c43SBram Moolenaar               \ ',')
27879166c43SBram Moolenaar
27979166c43SBram Moolenaarcall s:def_match('cdrtocTrackCDTextDataBinaryEnd',
28079166c43SBram Moolenaar               \ 'cdrtocTrackCDTextItem,cdrtocTrackCDTextLanguageEnd',
28179166c43SBram Moolenaar               \ '}')
28279166c43SBram Moolenaar
28379166c43SBram Moolenaarcall s:def_match('cdrtocTrackCDTextLanguageEnd',
28479166c43SBram Moolenaar               \ 'cdrtocTrackCDTextLanguage,cdrtocTrackCDTextEnd',
28579166c43SBram Moolenaar               \ '}')
28679166c43SBram Moolenaar
28779166c43SBram Moolenaarcall s:def_match('cdrtocTrackCDTextEnd',
28879166c43SBram Moolenaar               \ 'cdrtocTrackPregap,@cdrtocTrackContents',
28979166c43SBram Moolenaar               \ '}')
29079166c43SBram Moolenaar
29179166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackPregap', 'cdrtocTrackPregapMMSSFF', 'PREGAP')
29279166c43SBram Moolenaar
29379166c43SBram Moolenaarcall s:def_match('cdrtocTrackPregapMMSSFF',
29479166c43SBram Moolenaar               \ '@cdrtocTrackContents',
29579166c43SBram Moolenaar               \ s:mmssff_pattern)
29679166c43SBram Moolenaar
29779166c43SBram Moolenaarsyn cluster cdrtocTrackContents
29879166c43SBram Moolenaar      \ contains=
29979166c43SBram Moolenaar      \   cdrtocTrackSubTrack,
30079166c43SBram Moolenaar      \   cdrtocTrackMarker
30179166c43SBram Moolenaar
30279166c43SBram Moolenaarsyn cluster cdrtocTrackContentsFollow
30379166c43SBram Moolenaar      \ contains=
30479166c43SBram Moolenaar      \   @cdrtocTrackContents,
30579166c43SBram Moolenaar      \   cdrtocTrackIndex,
30679166c43SBram Moolenaar      \   cdrtocTrack
30779166c43SBram Moolenaar
30879166c43SBram Moolenaarcall s:def_keywords('cdrtocTrackSubTrack',
30979166c43SBram Moolenaar                  \ 'cdrtocTrackSubTrackFileFilename',
31079166c43SBram Moolenaar                  \ ['FILE', 'AUDIOFILE'])
31179166c43SBram Moolenaar
31279166c43SBram Moolenaarcall s:def_region('cdrtocTrackSubTrackFileFilename',
31379166c43SBram Moolenaar                \ 'cdrtocTrackSubTrackFileStart',
31479166c43SBram Moolenaar                \ '"',
31579166c43SBram Moolenaar                \ '\\\\\|\\"',
31679166c43SBram Moolenaar                \ '"',
31779166c43SBram Moolenaar                \ 'cdrtocTrackSubTrackFileFilenameDelimiters',
31879166c43SBram Moolenaar                \ 'cdrtocTrackSubTrackFileFilenameSpecialChar')
31979166c43SBram Moolenaar
32079166c43SBram Moolenaarsyn match   cdrtocTrackSubTrackFileFilenameSpecialChar
32179166c43SBram Moolenaar      \ contained
32279166c43SBram Moolenaar      \ display
32379166c43SBram Moolenaar      \ '\\\%(\o\o\o\|["\\]\)'
32479166c43SBram Moolenaar
32579166c43SBram Moolenaarcall s:def_match('cdrtocTrackSubTrackFileStart',
32679166c43SBram Moolenaar               \ 'cdrtocTrackSubTrackFileLength,@cdrtocTrackContentsFollow',
32779166c43SBram Moolenaar               \ s:length_pattern)
32879166c43SBram Moolenaar
32979166c43SBram Moolenaarcall s:def_match('cdrtocTrackSubTrackFileLength',
33079166c43SBram Moolenaar               \ '@cdrtocTrackContentsFollow',
33179166c43SBram Moolenaar               \ s:length_pattern)
33279166c43SBram Moolenaar
33379166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackSubTrack', 'cdrtocTrackContentDatafileFilename', 'DATAFILE')
33479166c43SBram Moolenaar
33579166c43SBram Moolenaarcall s:def_region('cdrtocTrackSubTrackDatafileFilename',
33679166c43SBram Moolenaar                \ 'cdrtocTrackSubTrackDatafileLength',
33779166c43SBram Moolenaar                \ '"',
33879166c43SBram Moolenaar                \ '\\\\\|\\"',
33979166c43SBram Moolenaar                \ '"',
34079166c43SBram Moolenaar                \ 'cdrtocTrackSubTrackDatafileFilenameDelimiters',
34179166c43SBram Moolenaar                \ 'cdrtocTrackSubTrackDatafileFilenameSpecialChar')
34279166c43SBram Moolenaar
34379166c43SBram Moolenaarsyn match   cdrtocTrackSubTrackdatafileFilenameSpecialChar
34479166c43SBram Moolenaar      \ contained
34579166c43SBram Moolenaar      \ display
34679166c43SBram Moolenaar      \ '\\\%(\o\o\o\|["\\]\)'
34779166c43SBram Moolenaar
34879166c43SBram Moolenaarcall s:def_match('cdrtocTrackDatafileLength',
34979166c43SBram Moolenaar               \ '@cdrtocTrackContentsFollow',
35079166c43SBram Moolenaar               \ s:length_pattern)
35179166c43SBram Moolenaar
35279166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackSubTrack', 'cdrtocTrackContentFifoFilename', 'DATAFILE')
35379166c43SBram Moolenaar
35479166c43SBram Moolenaarcall s:def_region('cdrtocTrackSubTrackFifoFilename',
35579166c43SBram Moolenaar                \ 'cdrtocTrackSubTrackFifoLength',
35679166c43SBram Moolenaar                \ '"',
35779166c43SBram Moolenaar                \ '\\\\\|\\"',
35879166c43SBram Moolenaar                \ '"',
35979166c43SBram Moolenaar                \ 'cdrtocTrackSubTrackFifoFilenameDelimiters',
36079166c43SBram Moolenaar                \ 'cdrtocTrackSubTrackFifoFilenameSpecialChar')
36179166c43SBram Moolenaar
36279166c43SBram Moolenaarsyn match   cdrtocTrackSubTrackdatafileFilenameSpecialChar
36379166c43SBram Moolenaar      \ contained
36479166c43SBram Moolenaar      \ display
36579166c43SBram Moolenaar      \ '\\\%(\o\o\o\|["\\]\)'
36679166c43SBram Moolenaar
36779166c43SBram Moolenaarcall s:def_match('cdrtocTrackFifoLength',
36879166c43SBram Moolenaar               \ '@cdrtocTrackContentsFollow',
36979166c43SBram Moolenaar               \ s:length_pattern)
37079166c43SBram Moolenaar
37179166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackSubTrack', 'cdrtocTrackSilenceLength', 'SILENCE')
37279166c43SBram Moolenaar
37379166c43SBram Moolenaarcall s:def_match('cdrtocTrackSilenceLength',
37479166c43SBram Moolenaar               \ '@cdrtocTrackContentsFollow',
37579166c43SBram Moolenaar               \ s:length_pattern)
37679166c43SBram Moolenaar
37779166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackSubTrack',
37879166c43SBram Moolenaar                 \ 'cdrtocTrackSubTrackZeroDataMode,' .
37979166c43SBram Moolenaar                 \ 'cdrtocTrackSubTrackZeroDataSubChannelMode,' .
38079166c43SBram Moolenaar                 \ 'cdrtocTrackSubTrackZeroDataLength',
38179166c43SBram Moolenaar                 \ 'ZERO')
38279166c43SBram Moolenaar
38379166c43SBram Moolenaarcall s:def_keywords('cdrtocTrackSubTrackZeroDataMode',
38479166c43SBram Moolenaar                  \ 'cdrtocTrackSubTrackZeroSubChannelMode,cdrtocTrackSubTrackZeroDataLength',
38579166c43SBram Moolenaar                  \ ['AUDIO', 'MODE1', 'MODE1_RAW', 'MODE2', 'MODE2_FORM1',
38679166c43SBram Moolenaar                  \  'MODE2_FORM2', 'MODE2_FORM_MIX', 'MODE2_RAW'])
38779166c43SBram Moolenaar
38879166c43SBram Moolenaarcall s:def_keywords('cdrtocTrackSubTrackZeroDataSubChannelMode',
38979166c43SBram Moolenaar                  \ 'cdrtocTrackSubTrackZeroDataLength',
39079166c43SBram Moolenaar                  \ ['RW', 'RW_RAW'])
39179166c43SBram Moolenaar
39279166c43SBram Moolenaarcall s:def_match('cdrtocTrackSubTrackZeroDataLength',
39379166c43SBram Moolenaar               \ '@cdrtocTrackContentsFollow',
39479166c43SBram Moolenaar               \ s:length_pattern)
39579166c43SBram Moolenaar
39679166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackMarker',
39779166c43SBram Moolenaar                 \ '@cdrtocTrackContentsFollow,cdrtocTrackMarkerStartMMSSFF',
39879166c43SBram Moolenaar                 \ 'START')
39979166c43SBram Moolenaar
40079166c43SBram Moolenaarcall s:def_match('cdrtocTrackMarkerStartMMSSFF',
40179166c43SBram Moolenaar               \ '@cdrtocTrackContentsFollow',
40279166c43SBram Moolenaar               \ s:mmssff_pattern)
40379166c43SBram Moolenaar
40479166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackMarker',
40579166c43SBram Moolenaar                 \ '@cdrtocTrackContentsFollow,cdrtocTrackMarkerEndMMSSFF',
40679166c43SBram Moolenaar                 \ 'END')
40779166c43SBram Moolenaar
40879166c43SBram Moolenaarcall s:def_match('cdrtocTrackMarkerEndMMSSFF',
40979166c43SBram Moolenaar               \ '@cdrtocTrackContentsFollow',
41079166c43SBram Moolenaar               \ s:mmssff_pattern)
41179166c43SBram Moolenaar
41279166c43SBram Moolenaarcall s:def_keyword('cdrtocTrackIndex', 'cdrtocTrackIndexMMSSFF', 'INDEX')
41379166c43SBram Moolenaar
41479166c43SBram Moolenaarcall s:def_match('cdrtocTrackIndexMMSSFF',
41579166c43SBram Moolenaar               \ 'cdrtocTrackIndex,cdrtocTrack',
41679166c43SBram Moolenaar               \ s:mmssff_pattern)
41779166c43SBram Moolenaar
41879166c43SBram Moolenaardelfunction s:def_region
41979166c43SBram Moolenaardelfunction s:def_match
42079166c43SBram Moolenaardelfunction s:def_keyword
42179166c43SBram Moolenaardelfunction s:def_keywords
42279166c43SBram Moolenaardelfunction s:def_comment
42379166c43SBram Moolenaar
42479166c43SBram Moolenaarsyn sync fromstart
42579166c43SBram Moolenaar
42679166c43SBram Moolenaarhi def link cdrtocKeyword                                  Keyword
42779166c43SBram Moolenaarhi def link cdrtocHeaderKeyword                            cdrtocKeyword
42879166c43SBram Moolenaarhi def link cdrtocHeaderCDText                             cdrtocHeaderKeyword
42979166c43SBram Moolenaarhi def link cdrtocDelimiter                                Delimiter
43079166c43SBram Moolenaarhi def link cdrtocCDTextDataBinaryEnd                      cdrtocDelimiter
43179166c43SBram Moolenaarhi def link cdrtocHeaderCDTextDataBinaryEnd                cdrtocHeaderCDTextDataBinaryEnd
43279166c43SBram Moolenaarhi def link cdrtocNumber                                   Number
43379166c43SBram Moolenaarhi def link cdrtocCDTextDataBinaryInteger                  cdrtocNumber
43479166c43SBram Moolenaarhi def link cdrtocHeaderCDTextDataBinaryInteger            cdrtocCDTextDataBinaryInteger
43579166c43SBram Moolenaarhi def link cdrtocCDTextDataBinarySeparator                cdrtocDelimiter
43679166c43SBram Moolenaarhi def link cdrtocHeaderCDTextDataBinarySeparator          cdrtocCDTextDataBinarySeparator
43779166c43SBram Moolenaarhi def link cdrtocCDTextDataBinaryStart                    cdrtocDelimiter
43879166c43SBram Moolenaarhi def link cdrtocHeaderCDTextDataBinaryStart              cdrtocCDTextDataBinaryStart
43979166c43SBram Moolenaarhi def link cdrtocString                                   String
44079166c43SBram Moolenaarhi def link cdrtocCDTextDataString                         cdrtocString
44179166c43SBram Moolenaarhi def link cdrtocHeaderCDTextDataString                   cdrtocCDTextDataString
44279166c43SBram Moolenaarhi def link cdrtocCDTextDataStringDelimiters               cdrtocDelimiter
44379166c43SBram Moolenaarhi def link cdrtocHeaderCDTextDataStringDelimiters         cdrtocCDTextDataStringDelimiters
44479166c43SBram Moolenaarhi def link cdrtocCDTextDataStringSpecialChar              SpecialChar
44579166c43SBram Moolenaarhi def link cdrtocHeaderCDTextDataStringSpecialChar        cdrtocCDTextDataStringSpecialChar
44679166c43SBram Moolenaarhi def link cdrtocCDTextEnd                                cdrtocDelimiter
44779166c43SBram Moolenaarhi def link cdrtocHeaderCDTextEnd                          cdrtocCDTextEnd
44879166c43SBram Moolenaarhi def link cdrtocType                                     Type
44979166c43SBram Moolenaarhi def link cdrtocCDTextItem                               cdrtocType
45079166c43SBram Moolenaarhi def link cdrtocHeaderCDTextItem                         cdrtocCDTextItem
45179166c43SBram Moolenaarhi def link cdrtocHeaderCDTextLanguageMap                  cdrtocHeaderKeyword
45279166c43SBram Moolenaarhi def link cdrtocCDTextStart                              cdrtocDelimiter
45379166c43SBram Moolenaarhi def link cdrtocHeaderCDTextStart                        cdrtocCDTextStart
45479166c43SBram Moolenaarhi def link cdrtocHeaderCatalog                            cdrtocHeaderKeyword
45579166c43SBram Moolenaarhi def link cdrtocHeaderCatalogNumber                      cdrtocString
45679166c43SBram Moolenaarhi def link cdrtocComment                                  Comment
45779166c43SBram Moolenaarhi def link cdrtocHeaderCommentInitial                     cdrtocComment
45879166c43SBram Moolenaarhi def link cdrtocHeaderLanguage                           cdrtocKeyword
45979166c43SBram Moolenaarhi def link cdrtocLanguageEnd                              cdrtocDelimiter
46079166c43SBram Moolenaarhi def link cdrtocHeaderLanguageEnd                        cdrtocLanguageEnd
46179166c43SBram Moolenaarhi def link cdrtocHeaderLanguageMapColon                   cdrtocDelimiter
46279166c43SBram Moolenaarhi def link cdrtocIdentifier                               Identifier
46379166c43SBram Moolenaarhi def link cdrtocHeaderLanguageMapCountryCode             cdrtocNumber
46479166c43SBram Moolenaarhi def link cdrtocHeaderLanguageMapCountryCodeName         cdrtocIdentifier
46579166c43SBram Moolenaarhi def link cdrtocHeaderLanguageMapEnd                     cdrtocDelimiter
46679166c43SBram Moolenaarhi def link cdrtocHeaderLanguageMapLanguageNumber          cdrtocNumber
46779166c43SBram Moolenaarhi def link cdrtocHeaderLanguageMapStart                   cdrtocDelimiter
46879166c43SBram Moolenaarhi def link cdrtocLanguageNumber                           cdrtocNumber
46979166c43SBram Moolenaarhi def link cdrtocHeaderLanguageNumber                     cdrtocLanguageNumber
47079166c43SBram Moolenaarhi def link cdrtocLanguageStart                            cdrtocDelimiter
47179166c43SBram Moolenaarhi def link cdrtocHeaderLanguageStart                      cdrtocLanguageStart
47279166c43SBram Moolenaarhi def link cdrtocHeaderTOCType                            cdrtocType
47379166c43SBram Moolenaarhi def link cdrtocTodo                                     Todo
47479166c43SBram Moolenaarhi def link cdrtocTrackKeyword                             cdrtocKeyword
47579166c43SBram Moolenaarhi def link cdrtocTrack                                    cdrtocTrackKeyword
47679166c43SBram Moolenaarhi def link cdrtocTrackCDText                              cdrtocTrackKeyword
47779166c43SBram Moolenaarhi def link cdrtocTrackCDTextDataBinaryEnd                 cdrtocHeaderCDTextDataBinaryEnd
47879166c43SBram Moolenaarhi def link cdrtocTrackCDTextDataBinaryInteger             cdrtocHeaderCDTextDataBinaryInteger
47979166c43SBram Moolenaarhi def link cdrtocTrackCDTextDataBinarySeparator           cdrtocHeaderCDTextDataBinarySeparator
48079166c43SBram Moolenaarhi def link cdrtocTrackCDTextDataBinaryStart               cdrtocHeaderCDTextDataBinaryStart
48179166c43SBram Moolenaarhi def link cdrtocTrackCDTextDataString                    cdrtocHeaderCDTextDataString
48279166c43SBram Moolenaarhi def link cdrtocTrackCDTextDataStringDelimiters          cdrtocCDTextDataStringDelimiters
48379166c43SBram Moolenaarhi def link cdrtocTrackCDTextDataStringSpecialChar         cdrtocCDTextDataStringSpecialChar
48479166c43SBram Moolenaarhi def link cdrtocTrackCDTextEnd                           cdrtocCDTextEnd
48579166c43SBram Moolenaarhi def link cdrtocTrackCDTextItem                          cdrtocCDTextItem
48679166c43SBram Moolenaarhi def link cdrtocTrackCDTextStart                         cdrtocCDTextStart
48779166c43SBram Moolenaarhi def link cdrtocLength                                   cdrtocNumber
48879166c43SBram Moolenaarhi def link cdrtocTrackDatafileLength                      cdrtocLength
48979166c43SBram Moolenaarhi def link cdrtocTrackFifoLength                          cdrtocLength
49079166c43SBram Moolenaarhi def link cdrtocPreProc                                  PreProc
49179166c43SBram Moolenaarhi def link cdrtocTrackFlag                                cdrtocPreProc
49279166c43SBram Moolenaarhi def link cdrtocTrackFlagCopy                            cdrtocTrackFlag
49379166c43SBram Moolenaarhi def link cdrtocSpecial                                  Special
49479166c43SBram Moolenaarhi def link cdrtocTrackFlagNo                              cdrtocSpecial
49579166c43SBram Moolenaarhi def link cdrtocTrackFlagPreEmphasis                     cdrtocTrackFlag
49679166c43SBram Moolenaarhi def link cdrtocTrackISRC                                cdrtocTrackFlag
49779166c43SBram Moolenaarhi def link cdrtocTrackIndex                               cdrtocTrackKeyword
49879166c43SBram Moolenaarhi def link cdrtocMMSSFF                                   cdrtocLength
49979166c43SBram Moolenaarhi def link cdrtocTrackIndexMMSSFF                         cdrtocMMSSFF
50079166c43SBram Moolenaarhi def link cdrtocTrackCDTextLanguage                      cdrtocTrackKeyword
50179166c43SBram Moolenaarhi def link cdrtocTrackCDTextLanguageEnd                   cdrtocLanguageEnd
50279166c43SBram Moolenaarhi def link cdrtocTrackCDTextLanguageNumber                cdrtocLanguageNumber
50379166c43SBram Moolenaarhi def link cdrtocTrackCDTextLanguageStart                 cdrtocLanguageStart
50479166c43SBram Moolenaarhi def link cdrtocTrackContents                            StorageClass
50579166c43SBram Moolenaarhi def link cdrtocTrackMarker                              cdrtocTrackContents
50679166c43SBram Moolenaarhi def link cdrtocTrackMarkerEndMMSSFF                     cdrtocMMSSFF
50779166c43SBram Moolenaarhi def link cdrtocTrackMarkerStartMMSSFF                   cdrtocMMSSFF
50879166c43SBram Moolenaarhi def link cdrtocTrackMode                                Type
50979166c43SBram Moolenaarhi def link cdrtocTrackPregap                              cdrtocTrackContents
51079166c43SBram Moolenaarhi def link cdrtocTrackPregapMMSSFF                        cdrtocMMSSFF
51179166c43SBram Moolenaarhi def link cdrtocTrackSilenceLength                       cdrtocLength
51279166c43SBram Moolenaarhi def link cdrtocTrackSubChannelMode                      cdrtocPreProc
51379166c43SBram Moolenaarhi def link cdrtocTrackSubTrack                            cdrtocTrackContents
51479166c43SBram Moolenaarhi def link cdrtocFilename                                 cdrtocString
51579166c43SBram Moolenaarhi def link cdrtocTrackSubTrackDatafileFilename            cdrtocFilename
51679166c43SBram Moolenaarhi def link cdrtocTrackSubTrackDatafileFilenameDelimiters  cdrtocTrackSubTrackDatafileFilename
51779166c43SBram Moolenaarhi def link cdrtocSpecialChar                              SpecialChar
51879166c43SBram Moolenaarhi def link cdrtocTrackSubTrackDatafileFilenameSpecialChar cdrtocSpecialChar
51979166c43SBram Moolenaarhi def link cdrtocTrackSubTrackDatafileLength              cdrtocLength
52079166c43SBram Moolenaarhi def link cdrtocTrackSubTrackFifoFilename                cdrtocFilename
52179166c43SBram Moolenaarhi def link cdrtocTrackSubTrackFifoFilenameDelimiters      cdrtocTrackSubTrackFifoFilename
52279166c43SBram Moolenaarhi def link cdrtocTrackSubTrackFifoFilenameSpecialChar     cdrtocSpecialChar
52379166c43SBram Moolenaarhi def link cdrtocTrackSubTrackFifoLength                  cdrtocLength
52479166c43SBram Moolenaarhi def link cdrtocTrackSubTrackFileFilename                cdrtocFilename
52579166c43SBram Moolenaarhi def link cdrtocTrackSubTrackFileFilenameDelimiters      cdrtocTrackSubTrackFileFilename
52679166c43SBram Moolenaarhi def link cdrtocTrackSubTrackFileFilenameSpecialChar     cdrtocSpecialChar
52779166c43SBram Moolenaarhi def link cdrtocTrackSubTrackFileLength                  cdrtocLength
52879166c43SBram Moolenaarhi def link cdrtocTrackSubTrackFileStart                   cdrtocLength
52979166c43SBram Moolenaarhi def link cdrtocTrackSubTrackZeroDataLength              cdrtocLength
53079166c43SBram Moolenaarhi def link cdrtocTrackSubTrackZeroDataMode                Type
53179166c43SBram Moolenaarhi def link cdrtocTrackSubTrackZeroDataSubChannelMode      cdrtocPreProc
53279166c43SBram Moolenaarhi def link cdrtocTrackSubTrackdatafileFilenameSpecialChar cdrtocSpecialChar
53379166c43SBram Moolenaar
53479166c43SBram Moolenaarlet b:current_syntax = "cdrtoc"
53579166c43SBram Moolenaar
53679166c43SBram Moolenaarlet &cpo = s:cpo_save
53779166c43SBram Moolenaarunlet s:cpo_save
538