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