xref: /vim-8.2.3635/runtime/syntax/hex.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
25837f1f4SBram Moolenaar" Language:	Intel HEX
35837f1f4SBram Moolenaar" Maintainer:	Markus Heidelberg <[email protected]>
45837f1f4SBram Moolenaar" Previous version:	Sams Ricahrd <[email protected]>
55837f1f4SBram Moolenaar" Last Change:	2015 Feb 24
65837f1f4SBram Moolenaar
75837f1f4SBram Moolenaar" Each record (line) is built as follows:
85837f1f4SBram Moolenaar"
95837f1f4SBram Moolenaar"    field       digits          states
105837f1f4SBram Moolenaar"
115837f1f4SBram Moolenaar"  +----------+
125837f1f4SBram Moolenaar"  | start    |  1 (':')         hexRecStart
135837f1f4SBram Moolenaar"  +----------+
145837f1f4SBram Moolenaar"  | count    |  2               hexDataByteCount
155837f1f4SBram Moolenaar"  +----------+
165837f1f4SBram Moolenaar"  | address  |  4               hexNoAddress, hexDataAddress, (hexAddressFieldUnknown)
175837f1f4SBram Moolenaar"  +----------+
185837f1f4SBram Moolenaar"  | type     |  2               hexRecType, (hexRecTypeUnknown)
195837f1f4SBram Moolenaar"  +----------+
205837f1f4SBram Moolenaar"  | data     |  0..510          hexDataOdd, hexDataEven, hexExtendedAddress, hexStartAddress, (hexDataFieldUnknown, hexDataUnexpected)
215837f1f4SBram Moolenaar"  +----------+
225837f1f4SBram Moolenaar"  | checksum |  2               hexChecksum
235837f1f4SBram Moolenaar"  +----------+
245837f1f4SBram Moolenaar"
255837f1f4SBram Moolenaar" States in parentheses in the upper format description indicate that they
265837f1f4SBram Moolenaar" should not appear in a valid file.
27071d4279SBram Moolenaar
2889bcfda6SBram Moolenaar" quit when a syntax file was already loaded
2989bcfda6SBram Moolenaarif exists("b:current_syntax")
30071d4279SBram Moolenaar  finish
31071d4279SBram Moolenaarendif
32071d4279SBram Moolenaar
335837f1f4SBram Moolenaarsyn match hexRecStart "^:"
34071d4279SBram Moolenaar
355837f1f4SBram Moolenaarsyn match hexDataByteCount "^:[0-9a-fA-F]\{2}" contains=hexRecStart nextgroup=hexAddress
36071d4279SBram Moolenaar
375837f1f4SBram Moolenaarsyn match hexAddress "[0-9a-fA-F]\{4}" transparent contained nextgroup=hexRecTypeUnknown,hexRecType
385837f1f4SBram Moolenaar" The address field groups include the record type field in the last 2
395837f1f4SBram Moolenaar" characters, the proper match for highlighting follows below.
405837f1f4SBram Moolenaarsyn match hexAddressFieldUnknown "^:[0-9a-fA-F]\{8}"      contains=hexDataByteCount nextgroup=hexDataFieldUnknown,hexChecksum
415837f1f4SBram Moolenaarsyn match hexDataAddress         "^:[0-9a-fA-F]\{6}00"    contains=hexDataByteCount nextgroup=hexDataOdd,hexChecksum
425837f1f4SBram Moolenaarsyn match hexNoAddress           "^:[0-9a-fA-F]\{6}01"    contains=hexDataByteCount nextgroup=hexDataUnexpected,hexChecksum
435837f1f4SBram Moolenaarsyn match hexNoAddress           "^:[0-9a-fA-F]\{6}0[24]" contains=hexDataByteCount nextgroup=hexExtendedAddress
445837f1f4SBram Moolenaarsyn match hexNoAddress           "^:[0-9a-fA-F]\{6}0[35]" contains=hexDataByteCount nextgroup=hexStartAddress
45071d4279SBram Moolenaar
465837f1f4SBram Moolenaarsyn match hexRecTypeUnknown "[0-9a-fA-F]\{2}" contained
475837f1f4SBram Moolenaarsyn match hexRecType        "0[0-5]"          contained
485837f1f4SBram Moolenaar
495837f1f4SBram Moolenaarsyn match hexDataFieldUnknown "[0-9a-fA-F]\{2}" contained nextgroup=hexDataFieldUnknown,hexChecksum
505837f1f4SBram Moolenaar" alternating highlight per byte for easier reading
515837f1f4SBram Moolenaarsyn match hexDataOdd          "[0-9a-fA-F]\{2}" contained nextgroup=hexDataEven,hexChecksum
525837f1f4SBram Moolenaarsyn match hexDataEven         "[0-9a-fA-F]\{2}" contained nextgroup=hexDataOdd,hexChecksum
535837f1f4SBram Moolenaar" data bytes which should not exist
545837f1f4SBram Moolenaarsyn match hexDataUnexpected   "[0-9a-fA-F]\{2}" contained nextgroup=hexDataUnexpected,hexChecksum
555837f1f4SBram Moolenaar" Data digit pair regex usage also results in only highlighting the checksum
565837f1f4SBram Moolenaar" if the number of data characters is even.
575837f1f4SBram Moolenaar
585837f1f4SBram Moolenaar" special data fields
595837f1f4SBram Moolenaarsyn match hexExtendedAddress "[0-9a-fA-F]\{4}" contained nextgroup=hexDataUnexpected,hexChecksum
605837f1f4SBram Moolenaarsyn match hexStartAddress    "[0-9a-fA-F]\{8}" contained nextgroup=hexDataUnexpected,hexChecksum
615837f1f4SBram Moolenaar
625837f1f4SBram Moolenaarsyn match hexChecksum "[0-9a-fA-F]\{2}$" contained
635837f1f4SBram Moolenaar
645837f1f4SBram Moolenaar" Folding Data Records below an Extended Segment/Linear Address Record
655837f1f4SBram Moolenaarsyn region hexExtAdrBlock start="^:[0-9a-fA-F]\{7}[24]" skip="^:[0-9a-fA-F]\{7}0" end="^:"me=s-1 fold transparent
66071d4279SBram Moolenaar
67071d4279SBram Moolenaar" Define the default highlighting.
6889bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
69071d4279SBram Moolenaar
70071d4279SBram Moolenaar" The default methods for highlighting. Can be overridden later
71*f37506f6SBram Moolenaarhi def link hexRecStart            hexRecType
72*f37506f6SBram Moolenaarhi def link hexDataByteCount       Constant
735837f1f4SBram Moolenaarhi def hexAddressFieldUnknown term=italic cterm=italic gui=italic
74*f37506f6SBram Moolenaarhi def link hexDataAddress         Comment
75*f37506f6SBram Moolenaarhi def link hexNoAddress           DiffAdd
76*f37506f6SBram Moolenaarhi def link hexRecTypeUnknown      hexRecType
77*f37506f6SBram Moolenaarhi def link hexRecType             WarningMsg
785837f1f4SBram Moolenaarhi def hexDataFieldUnknown    term=italic cterm=italic gui=italic
795837f1f4SBram Moolenaarhi def hexDataOdd             term=bold cterm=bold gui=bold
805837f1f4SBram Moolenaarhi def hexDataEven            term=NONE cterm=NONE gui=NONE
81*f37506f6SBram Moolenaarhi def link hexDataUnexpected      Error
82*f37506f6SBram Moolenaarhi def link hexExtendedAddress     hexDataAddress
83*f37506f6SBram Moolenaarhi def link hexStartAddress        hexDataAddress
84*f37506f6SBram Moolenaarhi def link hexChecksum            DiffChange
85071d4279SBram Moolenaar
86071d4279SBram Moolenaar
87071d4279SBram Moolenaarlet b:current_syntax = "hex"
88071d4279SBram Moolenaar
89071d4279SBram Moolenaar" vim: ts=8
90