1" Vim syntax file 2" Language: Motorola S-Record 3" Maintainer: Markus Heidelberg <[email protected]> 4" Last Change: 2015 Feb 24 5 6" Each record (line) is built as follows: 7" 8" field digits states 9" 10" +----------+ 11" | start | 1 ('S') srecRecStart 12" +----------+ 13" | type | 1 srecRecType, (srecRecTypeUnknown) 14" +----------+ 15" | count | 2 srecByteCount 16" +----------+ 17" | address | 4/6/8 srecNoAddress, srecDataAddress, srecRecCount, srecStartAddress, (srecAddressFieldUnknown) 18" +----------+ 19" | data | 0..504/502/500 srecDataOdd, srecDataEven, (srecDataUnexpected) 20" +----------+ 21" | checksum | 2 srecChecksum 22" +----------+ 23" 24" States in parentheses in the upper format description indicate that they 25" should not appear in a valid file. 26 27" For version 5.x: Clear all syntax items 28" For version 6.x: Quit when a syntax file was already loaded 29if version < 600 30 syntax clear 31elseif exists("b:current_syntax") 32 finish 33endif 34 35syn match srecRecStart "^S" 36 37syn match srecRecTypeUnknown "^S." contains=srecRecStart 38syn match srecRecType "^S[0-35-9]" contains=srecRecStart 39 40syn match srecByteCount "^S.[0-9a-fA-F]\{2}" contains=srecRecTypeUnknown nextgroup=srecAddressFieldUnknown,srecChecksum 41syn match srecByteCount "^S[0-35-9][0-9a-fA-F]\{2}" contains=srecRecType 42 43syn match srecAddressFieldUnknown "[0-9a-fA-F]\{2}" contained nextgroup=srecAddressFieldUnknown,srecChecksum 44 45syn match srecNoAddress "^S0[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum 46syn match srecDataAddress "^S1[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum 47syn match srecDataAddress "^S2[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum 48syn match srecDataAddress "^S3[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum 49syn match srecRecCount "^S5[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 50syn match srecRecCount "^S6[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 51syn match srecStartAddress "^S7[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 52syn match srecStartAddress "^S8[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 53syn match srecStartAddress "^S9[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 54 55" alternating highlight per byte for easier reading 56syn match srecDataOdd "[0-9a-fA-F]\{2}" contained nextgroup=srecDataEven,srecChecksum 57syn match srecDataEven "[0-9a-fA-F]\{2}" contained nextgroup=srecDataOdd,srecChecksum 58" data bytes which should not exist 59syn match srecDataUnexpected "[0-9a-fA-F]\{2}" contained nextgroup=srecDataUnexpected,srecChecksum 60" Data digit pair regex usage also results in only highlighting the checksum 61" if the number of data characters is even. 62 63syn match srecChecksum "[0-9a-fA-F]\{2}$" contained 64 65" Define the default highlighting. 66" For version 5.7 and earlier: only when not done already 67" For version 5.8 and later: only when an item doesn't have highlighting yet 68if version >= 508 || !exists("did_srec_syntax_inits") 69 if version < 508 70 let did_srec_syntax_inits = 1 71 command -nargs=+ HiLink hi link <args> 72 else 73 command -nargs=+ HiLink hi def link <args> 74 endif 75 76 " The default methods for highlighting. Can be overridden later 77 HiLink srecRecStart srecRecType 78 HiLink srecRecTypeUnknown srecRecType 79 HiLink srecRecType WarningMsg 80 HiLink srecByteCount Constant 81 hi def srecAddressFieldUnknown term=italic cterm=italic gui=italic 82 HiLink srecNoAddress DiffAdd 83 HiLink srecDataAddress Comment 84 HiLink srecRecCount srecNoAddress 85 HiLink srecStartAddress srecDataAddress 86 hi def srecDataOdd term=bold cterm=bold gui=bold 87 hi def srecDataEven term=NONE cterm=NONE gui=NONE 88 HiLink srecDataUnexpected Error 89 HiLink srecChecksum DiffChange 90 91 delcommand HiLink 92endif 93 94let b:current_syntax = "srec" 95 96" vim: ts=8 97