537 lines · 22.2 KB · Text
RawDownload
" Vim syntax file" Language:         cdrdao(1) TOC file" Maintainer:       Nikolai Weibull <now@bitwi.se>" Latest Revision:  2007-05-10 if exists("b:current_syntax")  finishendif let s:cpo_save = &cposet cpo&vim syn keyword cdrtocTodo      \ contained      \ TODO      \ FIXME      \ XXX      \ NOTE syn cluster cdrtocCommentContents      \ contains=      \   cdrtocTodo,      \   @Spell syn cluster cdrtocHeaderFollowsInitial      \ contains=      \   cdrtocHeaderCommentInitial,      \   cdrtocHeaderCatalog,      \   cdrtocHeaderTOCType,      \   cdrtocHeaderCDText,      \   cdrtocTrack syn match   cdrtocHeaderBegin      \ nextgroup=@cdrtocHeaderFollowsInitial      \ skipwhite skipempty      \ '\%^' let s:mmssff_pattern = '\%([0-5]\d\|\d\):\%([0-5]\d\|\d\):\%([0-6]\d\|7[0-5]\|\d\)\>'let s:byte_pattern = '\<\%([01]\=\d\{1,2}\|2\%([0-4]\d\|5[0-5]\)\)\>'let s:length_pattern = '\%(\%([0-5]\d\|\d\):\%([0-5]\d\|\d\):\%([0-6]\d\|7[0-5]\|\d\)\|\d\+\)\>' function s:def_comment(name, nextgroup)  execute 'syn match' a:name        \ 'nextgroup=' . a:nextgroup . ',' . a:name        \ 'skipwhite skipempty'        \ 'contains=@cdrtocCommentContents'        \ 'contained'        \ "'//.*$'"  execute 'hi def link' a:name 'cdrtocComment'endfunction function s:def_keywords(name, nextgroup, keywords)  let comment_group = a:name . 'FollowComment'  execute 'syn keyword' a:name        \ 'nextgroup=' . a:nextgroup . ',' . comment_group        \ 'skipwhite skipempty'        \ 'contained'        \ join(a:keywords)   call s:def_comment(comment_group, a:nextgroup)endfunction function s:def_keyword(name, nextgroup, keyword)  call s:def_keywords(a:name, a:nextgroup, [a:keyword])endfunction " NOTE: Pattern needs to escape any “@”s.function s:def_match(name, nextgroup, pattern)  let comment_group = a:name . 'FollowComment'  execute 'syn match' a:name        \ 'nextgroup=' . a:nextgroup . ',' . comment_group        \ 'skipwhite skipempty'        \ 'contained'        \ '@' . a:pattern . '@'   call s:def_comment(comment_group, a:nextgroup)endfunction function s:def_region(name, nextgroup, start, skip, end, matchgroup, contains)  let comment_group = a:name . 'FollowComment'  execute 'syn region' a:name        \ 'nextgroup=' . a:nextgroup . ',' . comment_group        \ 'skipwhite skipempty'        \ 'contained'        \ 'matchgroup=' . a:matchgroup        \ 'contains=' . a:contains        \ 'start=@' . a:start . '@'        \ (a:skip != "" ? ('skip=@' . a:skip . '@') : "")        \ 'end=@' . a:end . '@'   call s:def_comment(comment_group, a:nextgroup)endfunction call s:def_comment('cdrtocHeaderCommentInitial', '@cdrtocHeaderFollowsInitial') call s:def_keyword('cdrtocHeaderCatalog', 'cdrtocHeaderCatalogNumber', 'CATALOG') call s:def_match('cdrtocHeaderCatalogNumber', '@cdrtocHeaderFollowsInitial', '"\d\{13\}"') call s:def_keywords('cdrtocHeaderTOCType', '@cdrtocHeaderFollowsInitial', ['CD_DA', 'CD_ROM', 'CD_ROM_XA']) call s:def_keyword('cdrtocHeaderCDText', 'cdrtocHeaderCDTextStart', 'CD_TEXT') " TODO: Actually, language maps aren’t required by TocParser.g, but let’s keep" things simple (and in agreement with what the manual page says).call s:def_match('cdrtocHeaderCDTextStart', 'cdrtocHeaderCDTextLanguageMap', '{') call s:def_keyword('cdrtocHeaderCDTextLanguageMap', 'cdrtocHeaderLanguageMapStart', 'LANGUAGE_MAP') call s:def_match('cdrtocHeaderLanguageMapStart', 'cdrtocHeaderLanguageMapLanguageNumber', '{') call s:def_match('cdrtocHeaderLanguageMapLanguageNumber', 'cdrtocHeaderLanguageMapColon', '\<[0-7]\>') call s:def_match('cdrtocHeaderLanguageMapColon', 'cdrtocHeaderLanguageMapCountryCode,cdrtocHeaderLanguageMapCountryCodeName', ':') syn cluster cdrtocHeaderLanguageMapCountryCodeFollow      \ contains=      \   cdrtocHeaderLanguageMapLanguageNumber,      \   cdrtocHeaderLanguageMapEnd call s:def_match('cdrtocHeaderLanguageMapCountryCode',               \ '@cdrtocHeaderLanguageMapCountryCodeFollow',               \ s:byte_pattern) call s:def_keyword('cdrtocHeaderLanguageMapCountryCodeName',                 \ '@cdrtocHeaderLanguageMapCountryCodeFollow',                 \ 'EN') call s:def_match('cdrtocHeaderLanguageMapEnd',               \ 'cdrtocHeaderLanguage,cdrtocHeaderCDTextEnd',               \ '}') call s:def_keyword('cdrtocHeaderLanguage', 'cdrtocHeaderLanguageNumber', 'LANGUAGE') call s:def_match('cdrtocHeaderLanguageNumber', 'cdrtocHeaderLanguageStart', '\<[0-7]\>') call s:def_match('cdrtocHeaderLanguageStart',               \ 'cdrtocHeaderCDTextItem,cdrtocHeaderLanguageEnd',               \ '{') syn cluster cdrtocHeaderCDTextData      \ contains=      \   cdrtocHeaderCDTextDataString,      \   cdrtocHeaderCDTextDataBinaryStart call s:def_keywords('cdrtocHeaderCDTextItem',                  \ '@cdrtocHeaderCDTextData',                  \ ['TITLE', 'PERFORMER', 'SONGWRITER', 'COMPOSER',                  \  'ARRANGER', 'MESSAGE', 'DISC_ID', 'GENRE', 'TOC_INFO1',                  \  'TOC_INFO2', 'UPC_EAN', 'ISRC', 'SIZE_INFO']) call s:def_region('cdrtocHeaderCDTextDataString',                \ 'cdrtocHeaderCDTextItem,cdrtocHeaderLanguageEnd',                \ '"',                \ '\\\\\|\\"',                \ '"',                \ 'cdrtocHeaderCDTextDataStringDelimiters',                \ 'cdrtocHeaderCDTextDataStringSpecialChar') syn match   cdrtocHeaderCDTextDataStringSpecialChar      \ contained      \ display      \ '\\\%(\o\o\o\|["\\]\)' call s:def_match('cdrtocHeaderCDTextDataBinaryStart',               \ 'cdrtocHeaderCDTextDataBinaryInteger',               \ '{') call s:def_match('cdrtocHeaderCDTextDataBinaryInteger',               \ 'cdrtocHeaderCDTextDataBinarySeparator,cdrtocHeaderCDTextDataBinaryEnd',               \ s:byte_pattern) call s:def_match('cdrtocHeaderCDTextDataBinarySeparator',               \ 'cdrtocHeaderCDTextDataBinaryInteger',               \ ',') call s:def_match('cdrtocHeaderCDTextDataBinaryEnd',               \ 'cdrtocHeaderCDTextItem,cdrtocHeaderLanguageEnd',               \ '}') call s:def_match('cdrtocHeaderLanguageEnd',               \ 'cdrtocHeaderLanguage,cdrtocHeaderCDTextEnd',               \ '}') call s:def_match('cdrtocHeaderCDTextEnd',               \ 'cdrtocTrack',               \ '}') syn cluster cdrtocTrackFollow      \ contains=      \   @cdrtocTrackFlags,      \   cdrtocTrackCDText,      \   cdrtocTrackPregap,      \   @cdrtocTrackContents call s:def_keyword('cdrtocTrack', 'cdrtocTrackMode', 'TRACK') call s:def_keywords('cdrtocTrackMode',                  \ 'cdrtocTrackSubChannelMode,@cdrtocTrackFollow',                  \ ['AUDIO', 'MODE1', 'MODE1_RAW', 'MODE2', 'MODE2_FORM1',                  \  'MODE2_FORM2', 'MODE2_FORM_MIX', 'MODE2_RAW']) call s:def_keywords('cdrtocTrackSubChannelMode',                  \ '@cdrtocTrackFollow',                  \ ['RW', 'RW_RAW']) syn cluster cdrtocTrackFlags      \ contains=      \   cdrtocTrackFlagNo,      \   cdrtocTrackFlagCopy,      \   cdrtocTrackFlagPreEmphasis,      \   cdrtocTrackFlag call s:def_keyword('cdrtocTrackFlagNo',                 \ 'cdrtocTrackFlagCopy,cdrtocTrackFlagPreEmphasis',                 \ 'NO') call s:def_keyword('cdrtocTrackFlagCopy', '@cdrtocTrackFollow', 'COPY') call s:def_keyword('cdrtocTrackFlagPreEmphasis', '@cdrtocTrackFollow', 'PRE_EMPHASIS') call s:def_keywords('cdrtocTrackFlag',                  \ '@cdrtocTrackFollow',                  \ ['TWO_CHANNEL_AUDIO', 'FOUR_CHANNEL_AUDIO']) call s:def_keyword('cdrtocTrackFlag', 'cdrtocTrackISRC', 'ISRC') call s:def_match('cdrtocTrackISRC',               \ '@cdrtocTrackFollow',               \ '"[[:upper:][:digit:]]\{5}\d\{7}"') call s:def_keyword('cdrtocTrackCDText', 'cdrtocTrackCDTextStart', 'CD_TEXT') call s:def_match('cdrtocTrackCDTextStart', 'cdrtocTrackCDTextLanguage', '{') call s:def_keyword('cdrtocTrackCDTextLanguage', 'cdrtocTrackCDTextLanguageNumber', 'LANGUAGE') call s:def_match('cdrtocTrackCDTextLanguageNumber', 'cdrtocTrackCDTextLanguageStart', '\<[0-7]\>') call s:def_match('cdrtocTrackCDTextLanguageStart',               \ 'cdrtocTrackCDTextItem,cdrtocTrackCDTextLanguageEnd',               \ '{') syn cluster cdrtocTrackCDTextData      \ contains=      \   cdrtocTrackCDTextDataString,      \   cdrtocTrackCDTextDataBinaryStart call s:def_keywords('cdrtocTrackCDTextItem',                  \ '@cdrtocTrackCDTextData',                  \ ['TITLE', 'PERFORMER', 'SONGWRITER', 'COMPOSER', 'ARRANGER',                  \  'MESSAGE', 'ISRC']) call s:def_region('cdrtocTrackCDTextDataString',                \ 'cdrtocTrackCDTextItem,cdrtocTrackCDTextLanguageEnd',                \ '"',                \ '\\\\\|\\"',                \ '"',                \ 'cdrtocTrackCDTextDataStringDelimiters',                \ 'cdrtocTrackCDTextDataStringSpecialChar') syn match   cdrtocTrackCDTextDataStringSpecialChar      \ contained      \ display      \ '\\\%(\o\o\o\|["\\]\)' call s:def_match('cdrtocTrackCDTextDataBinaryStart',               \ 'cdrtocTrackCDTextDataBinaryInteger',               \ '{') call s:def_match('cdrtocTrackCDTextDataBinaryInteger',               \ 'cdrtocTrackCDTextDataBinarySeparator,cdrtocTrackCDTextDataBinaryEnd',               \ s:byte_pattern) call s:def_match('cdrtocTrackCDTextDataBinarySeparator',               \ 'cdrtocTrackCDTextDataBinaryInteger',               \ ',') call s:def_match('cdrtocTrackCDTextDataBinaryEnd',               \ 'cdrtocTrackCDTextItem,cdrtocTrackCDTextLanguageEnd',               \ '}') call s:def_match('cdrtocTrackCDTextLanguageEnd',               \ 'cdrtocTrackCDTextLanguage,cdrtocTrackCDTextEnd',               \ '}') call s:def_match('cdrtocTrackCDTextEnd',               \ 'cdrtocTrackPregap,@cdrtocTrackContents',               \ '}') call s:def_keyword('cdrtocTrackPregap', 'cdrtocTrackPregapMMSSFF', 'PREGAP') call s:def_match('cdrtocTrackPregapMMSSFF',               \ '@cdrtocTrackContents',               \ s:mmssff_pattern) syn cluster cdrtocTrackContents      \ contains=      \   cdrtocTrackSubTrack,      \   cdrtocTrackMarker syn cluster cdrtocTrackContentsFollow      \ contains=      \   @cdrtocTrackContents,      \   cdrtocTrackIndex,      \   cdrtocTrack call s:def_keywords('cdrtocTrackSubTrack',                  \ 'cdrtocTrackSubTrackFileFilename',                  \ ['FILE', 'AUDIOFILE']) call s:def_region('cdrtocTrackSubTrackFileFilename',                \ 'cdrtocTrackSubTrackFileStart',                \ '"',                \ '\\\\\|\\"',                \ '"',                \ 'cdrtocTrackSubTrackFileFilenameDelimiters',                \ 'cdrtocTrackSubTrackFileFilenameSpecialChar') syn match   cdrtocTrackSubTrackFileFilenameSpecialChar      \ contained      \ display      \ '\\\%(\o\o\o\|["\\]\)' call s:def_match('cdrtocTrackSubTrackFileStart',               \ 'cdrtocTrackSubTrackFileLength,@cdrtocTrackContentsFollow',               \ s:length_pattern) call s:def_match('cdrtocTrackSubTrackFileLength',               \ '@cdrtocTrackContentsFollow',               \ s:length_pattern) call s:def_keyword('cdrtocTrackSubTrack', 'cdrtocTrackContentDatafileFilename', 'DATAFILE') call s:def_region('cdrtocTrackSubTrackDatafileFilename',                \ 'cdrtocTrackSubTrackDatafileLength',                \ '"',                \ '\\\\\|\\"',                \ '"',                \ 'cdrtocTrackSubTrackDatafileFilenameDelimiters',                \ 'cdrtocTrackSubTrackDatafileFilenameSpecialChar') syn match   cdrtocTrackSubTrackdatafileFilenameSpecialChar      \ contained      \ display      \ '\\\%(\o\o\o\|["\\]\)' call s:def_match('cdrtocTrackDatafileLength',               \ '@cdrtocTrackContentsFollow',               \ s:length_pattern) call s:def_keyword('cdrtocTrackSubTrack', 'cdrtocTrackContentFifoFilename', 'DATAFILE') call s:def_region('cdrtocTrackSubTrackFifoFilename',                \ 'cdrtocTrackSubTrackFifoLength',                \ '"',                \ '\\\\\|\\"',                \ '"',                \ 'cdrtocTrackSubTrackFifoFilenameDelimiters',                \ 'cdrtocTrackSubTrackFifoFilenameSpecialChar') syn match   cdrtocTrackSubTrackdatafileFilenameSpecialChar      \ contained      \ display      \ '\\\%(\o\o\o\|["\\]\)' call s:def_match('cdrtocTrackFifoLength',               \ '@cdrtocTrackContentsFollow',               \ s:length_pattern) call s:def_keyword('cdrtocTrackSubTrack', 'cdrtocTrackSilenceLength', 'SILENCE') call s:def_match('cdrtocTrackSilenceLength',               \ '@cdrtocTrackContentsFollow',               \ s:length_pattern) call s:def_keyword('cdrtocTrackSubTrack',                 \ 'cdrtocTrackSubTrackZeroDataMode,' .                 \ 'cdrtocTrackSubTrackZeroDataSubChannelMode,' .                 \ 'cdrtocTrackSubTrackZeroDataLength',                 \ 'ZERO') call s:def_keywords('cdrtocTrackSubTrackZeroDataMode',                  \ 'cdrtocTrackSubTrackZeroSubChannelMode,cdrtocTrackSubTrackZeroDataLength',                  \ ['AUDIO', 'MODE1', 'MODE1_RAW', 'MODE2', 'MODE2_FORM1',                  \  'MODE2_FORM2', 'MODE2_FORM_MIX', 'MODE2_RAW']) call s:def_keywords('cdrtocTrackSubTrackZeroDataSubChannelMode',                  \ 'cdrtocTrackSubTrackZeroDataLength',                  \ ['RW', 'RW_RAW']) call s:def_match('cdrtocTrackSubTrackZeroDataLength',               \ '@cdrtocTrackContentsFollow',               \ s:length_pattern) call s:def_keyword('cdrtocTrackMarker',                 \ '@cdrtocTrackContentsFollow,cdrtocTrackMarkerStartMMSSFF',                 \ 'START') call s:def_match('cdrtocTrackMarkerStartMMSSFF',               \ '@cdrtocTrackContentsFollow',               \ s:mmssff_pattern) call s:def_keyword('cdrtocTrackMarker',                 \ '@cdrtocTrackContentsFollow,cdrtocTrackMarkerEndMMSSFF',                 \ 'END') call s:def_match('cdrtocTrackMarkerEndMMSSFF',               \ '@cdrtocTrackContentsFollow',               \ s:mmssff_pattern) call s:def_keyword('cdrtocTrackIndex', 'cdrtocTrackIndexMMSSFF', 'INDEX') call s:def_match('cdrtocTrackIndexMMSSFF',               \ 'cdrtocTrackIndex,cdrtocTrack',               \ s:mmssff_pattern) delfunction s:def_regiondelfunction s:def_matchdelfunction s:def_keyworddelfunction s:def_keywordsdelfunction s:def_comment syn sync fromstart hi def link cdrtocKeyword                                  Keywordhi def link cdrtocHeaderKeyword                            cdrtocKeywordhi def link cdrtocHeaderCDText                             cdrtocHeaderKeywordhi def link cdrtocDelimiter                                Delimiterhi def link cdrtocCDTextDataBinaryEnd                      cdrtocDelimiterhi def link cdrtocHeaderCDTextDataBinaryEnd                cdrtocHeaderCDTextDataBinaryEndhi def link cdrtocNumber                                   Numberhi def link cdrtocCDTextDataBinaryInteger                  cdrtocNumberhi def link cdrtocHeaderCDTextDataBinaryInteger            cdrtocCDTextDataBinaryIntegerhi def link cdrtocCDTextDataBinarySeparator                cdrtocDelimiterhi def link cdrtocHeaderCDTextDataBinarySeparator          cdrtocCDTextDataBinarySeparatorhi def link cdrtocCDTextDataBinaryStart                    cdrtocDelimiterhi def link cdrtocHeaderCDTextDataBinaryStart              cdrtocCDTextDataBinaryStarthi def link cdrtocString                                   Stringhi def link cdrtocCDTextDataString                         cdrtocStringhi def link cdrtocHeaderCDTextDataString                   cdrtocCDTextDataStringhi def link cdrtocCDTextDataStringDelimiters               cdrtocDelimiterhi def link cdrtocHeaderCDTextDataStringDelimiters         cdrtocCDTextDataStringDelimitershi def link cdrtocCDTextDataStringSpecialChar              SpecialCharhi def link cdrtocHeaderCDTextDataStringSpecialChar        cdrtocCDTextDataStringSpecialCharhi def link cdrtocCDTextEnd                                cdrtocDelimiterhi def link cdrtocHeaderCDTextEnd                          cdrtocCDTextEndhi def link cdrtocType                                     Typehi def link cdrtocCDTextItem                               cdrtocTypehi def link cdrtocHeaderCDTextItem                         cdrtocCDTextItemhi def link cdrtocHeaderCDTextLanguageMap                  cdrtocHeaderKeywordhi def link cdrtocCDTextStart                              cdrtocDelimiterhi def link cdrtocHeaderCDTextStart                        cdrtocCDTextStarthi def link cdrtocHeaderCatalog                            cdrtocHeaderKeywordhi def link cdrtocHeaderCatalogNumber                      cdrtocStringhi def link cdrtocComment                                  Commenthi def link cdrtocHeaderCommentInitial                     cdrtocCommenthi def link cdrtocHeaderLanguage                           cdrtocKeywordhi def link cdrtocLanguageEnd                              cdrtocDelimiterhi def link cdrtocHeaderLanguageEnd                        cdrtocLanguageEndhi def link cdrtocHeaderLanguageMapColon                   cdrtocDelimiterhi def link cdrtocIdentifier                               Identifierhi def link cdrtocHeaderLanguageMapCountryCode             cdrtocNumberhi def link cdrtocHeaderLanguageMapCountryCodeName         cdrtocIdentifierhi def link cdrtocHeaderLanguageMapEnd                     cdrtocDelimiterhi def link cdrtocHeaderLanguageMapLanguageNumber          cdrtocNumberhi def link cdrtocHeaderLanguageMapStart                   cdrtocDelimiterhi def link cdrtocLanguageNumber                           cdrtocNumberhi def link cdrtocHeaderLanguageNumber                     cdrtocLanguageNumberhi def link cdrtocLanguageStart                            cdrtocDelimiterhi def link cdrtocHeaderLanguageStart                      cdrtocLanguageStarthi def link cdrtocHeaderTOCType                            cdrtocTypehi def link cdrtocTodo                                     Todohi def link cdrtocTrackKeyword                             cdrtocKeywordhi def link cdrtocTrack                                    cdrtocTrackKeywordhi def link cdrtocTrackCDText                              cdrtocTrackKeywordhi def link cdrtocTrackCDTextDataBinaryEnd                 cdrtocHeaderCDTextDataBinaryEndhi def link cdrtocTrackCDTextDataBinaryInteger             cdrtocHeaderCDTextDataBinaryIntegerhi def link cdrtocTrackCDTextDataBinarySeparator           cdrtocHeaderCDTextDataBinarySeparatorhi def link cdrtocTrackCDTextDataBinaryStart               cdrtocHeaderCDTextDataBinaryStarthi def link cdrtocTrackCDTextDataString                    cdrtocHeaderCDTextDataStringhi def link cdrtocTrackCDTextDataStringDelimiters          cdrtocCDTextDataStringDelimitershi def link cdrtocTrackCDTextDataStringSpecialChar         cdrtocCDTextDataStringSpecialCharhi def link cdrtocTrackCDTextEnd                           cdrtocCDTextEndhi def link cdrtocTrackCDTextItem                          cdrtocCDTextItemhi def link cdrtocTrackCDTextStart                         cdrtocCDTextStarthi def link cdrtocLength                                   cdrtocNumberhi def link cdrtocTrackDatafileLength                      cdrtocLengthhi def link cdrtocTrackFifoLength                          cdrtocLengthhi def link cdrtocPreProc                                  PreProchi def link cdrtocTrackFlag                                cdrtocPreProchi def link cdrtocTrackFlagCopy                            cdrtocTrackFlaghi def link cdrtocSpecial                                  Specialhi def link cdrtocTrackFlagNo                              cdrtocSpecialhi def link cdrtocTrackFlagPreEmphasis                     cdrtocTrackFlaghi def link cdrtocTrackISRC                                cdrtocTrackFlaghi def link cdrtocTrackIndex                               cdrtocTrackKeywordhi def link cdrtocMMSSFF                                   cdrtocLengthhi def link cdrtocTrackIndexMMSSFF                         cdrtocMMSSFFhi def link cdrtocTrackCDTextLanguage                      cdrtocTrackKeyword

Lines 1–500 of 537.