15837f1f4SBram Moolenaar" Vim syntax file 25837f1f4SBram Moolenaar" Language: Motorola S-Record 35837f1f4SBram Moolenaar" Maintainer: Markus Heidelberg <[email protected]> 45837f1f4SBram Moolenaar" Last Change: 2015 Feb 24 55837f1f4SBram Moolenaar 65837f1f4SBram Moolenaar" Each record (line) is built as follows: 75837f1f4SBram Moolenaar" 85837f1f4SBram Moolenaar" field digits states 95837f1f4SBram Moolenaar" 105837f1f4SBram Moolenaar" +----------+ 115837f1f4SBram Moolenaar" | start | 1 ('S') srecRecStart 125837f1f4SBram Moolenaar" +----------+ 135837f1f4SBram Moolenaar" | type | 1 srecRecType, (srecRecTypeUnknown) 145837f1f4SBram Moolenaar" +----------+ 155837f1f4SBram Moolenaar" | count | 2 srecByteCount 165837f1f4SBram Moolenaar" +----------+ 175837f1f4SBram Moolenaar" | address | 4/6/8 srecNoAddress, srecDataAddress, srecRecCount, srecStartAddress, (srecAddressFieldUnknown) 185837f1f4SBram Moolenaar" +----------+ 195837f1f4SBram Moolenaar" | data | 0..504/502/500 srecDataOdd, srecDataEven, (srecDataUnexpected) 205837f1f4SBram Moolenaar" +----------+ 215837f1f4SBram Moolenaar" | checksum | 2 srecChecksum 225837f1f4SBram Moolenaar" +----------+ 235837f1f4SBram Moolenaar" 245837f1f4SBram Moolenaar" States in parentheses in the upper format description indicate that they 255837f1f4SBram Moolenaar" should not appear in a valid file. 265837f1f4SBram Moolenaar 2789bcfda6SBram Moolenaar" quit when a syntax file was already loaded 2889bcfda6SBram Moolenaarif exists("b:current_syntax") 295837f1f4SBram Moolenaar finish 305837f1f4SBram Moolenaarendif 315837f1f4SBram Moolenaar 325837f1f4SBram Moolenaarsyn match srecRecStart "^S" 335837f1f4SBram Moolenaar 345837f1f4SBram Moolenaarsyn match srecRecTypeUnknown "^S." contains=srecRecStart 355837f1f4SBram Moolenaarsyn match srecRecType "^S[0-35-9]" contains=srecRecStart 365837f1f4SBram Moolenaar 375837f1f4SBram Moolenaarsyn match srecByteCount "^S.[0-9a-fA-F]\{2}" contains=srecRecTypeUnknown nextgroup=srecAddressFieldUnknown,srecChecksum 385837f1f4SBram Moolenaarsyn match srecByteCount "^S[0-35-9][0-9a-fA-F]\{2}" contains=srecRecType 395837f1f4SBram Moolenaar 405837f1f4SBram Moolenaarsyn match srecAddressFieldUnknown "[0-9a-fA-F]\{2}" contained nextgroup=srecAddressFieldUnknown,srecChecksum 415837f1f4SBram Moolenaar 425837f1f4SBram Moolenaarsyn match srecNoAddress "^S0[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum 435837f1f4SBram Moolenaarsyn match srecDataAddress "^S1[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum 445837f1f4SBram Moolenaarsyn match srecDataAddress "^S2[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum 455837f1f4SBram Moolenaarsyn match srecDataAddress "^S3[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum 465837f1f4SBram Moolenaarsyn match srecRecCount "^S5[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 475837f1f4SBram Moolenaarsyn match srecRecCount "^S6[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 485837f1f4SBram Moolenaarsyn match srecStartAddress "^S7[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 495837f1f4SBram Moolenaarsyn match srecStartAddress "^S8[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 505837f1f4SBram Moolenaarsyn match srecStartAddress "^S9[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum 515837f1f4SBram Moolenaar 525837f1f4SBram Moolenaar" alternating highlight per byte for easier reading 535837f1f4SBram Moolenaarsyn match srecDataOdd "[0-9a-fA-F]\{2}" contained nextgroup=srecDataEven,srecChecksum 545837f1f4SBram Moolenaarsyn match srecDataEven "[0-9a-fA-F]\{2}" contained nextgroup=srecDataOdd,srecChecksum 555837f1f4SBram Moolenaar" data bytes which should not exist 565837f1f4SBram Moolenaarsyn match srecDataUnexpected "[0-9a-fA-F]\{2}" contained nextgroup=srecDataUnexpected,srecChecksum 575837f1f4SBram Moolenaar" Data digit pair regex usage also results in only highlighting the checksum 585837f1f4SBram Moolenaar" if the number of data characters is even. 595837f1f4SBram Moolenaar 605837f1f4SBram Moolenaarsyn match srecChecksum "[0-9a-fA-F]\{2}$" contained 615837f1f4SBram Moolenaar 625837f1f4SBram Moolenaar" Define the default highlighting. 6389bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 645837f1f4SBram Moolenaar 655837f1f4SBram Moolenaar" The default methods for highlighting. Can be overridden later 66*f37506f6SBram Moolenaarhi def link srecRecStart srecRecType 67*f37506f6SBram Moolenaarhi def link srecRecTypeUnknown srecRecType 68*f37506f6SBram Moolenaarhi def link srecRecType WarningMsg 69*f37506f6SBram Moolenaarhi def link srecByteCount Constant 705837f1f4SBram Moolenaarhi def srecAddressFieldUnknown term=italic cterm=italic gui=italic 71*f37506f6SBram Moolenaarhi def link srecNoAddress DiffAdd 72*f37506f6SBram Moolenaarhi def link srecDataAddress Comment 73*f37506f6SBram Moolenaarhi def link srecRecCount srecNoAddress 74*f37506f6SBram Moolenaarhi def link srecStartAddress srecDataAddress 755837f1f4SBram Moolenaarhi def srecDataOdd term=bold cterm=bold gui=bold 765837f1f4SBram Moolenaarhi def srecDataEven term=NONE cterm=NONE gui=NONE 77*f37506f6SBram Moolenaarhi def link srecDataUnexpected Error 78*f37506f6SBram Moolenaarhi def link srecChecksum DiffChange 795837f1f4SBram Moolenaar 805837f1f4SBram Moolenaar 815837f1f4SBram Moolenaarlet b:current_syntax = "srec" 825837f1f4SBram Moolenaar 835837f1f4SBram Moolenaar" vim: ts=8 84