Bram Moolenaar | 5837f1f | 2015-03-21 18:06:14 +0100 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: Motorola S-Record |
| 3 | " Maintainer: Markus Heidelberg <markus.heidelberg@web.de> |
| 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 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 27 | " quit when a syntax file was already loaded |
| 28 | if exists("b:current_syntax") |
Bram Moolenaar | 5837f1f | 2015-03-21 18:06:14 +0100 | [diff] [blame] | 29 | finish |
| 30 | endif |
| 31 | |
| 32 | syn match srecRecStart "^S" |
| 33 | |
| 34 | syn match srecRecTypeUnknown "^S." contains=srecRecStart |
| 35 | syn match srecRecType "^S[0-35-9]" contains=srecRecStart |
| 36 | |
| 37 | syn match srecByteCount "^S.[0-9a-fA-F]\{2}" contains=srecRecTypeUnknown nextgroup=srecAddressFieldUnknown,srecChecksum |
| 38 | syn match srecByteCount "^S[0-35-9][0-9a-fA-F]\{2}" contains=srecRecType |
| 39 | |
| 40 | syn match srecAddressFieldUnknown "[0-9a-fA-F]\{2}" contained nextgroup=srecAddressFieldUnknown,srecChecksum |
| 41 | |
| 42 | syn match srecNoAddress "^S0[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum |
| 43 | syn match srecDataAddress "^S1[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum |
| 44 | syn match srecDataAddress "^S2[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum |
| 45 | syn match srecDataAddress "^S3[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum |
| 46 | syn match srecRecCount "^S5[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum |
| 47 | syn match srecRecCount "^S6[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum |
| 48 | syn match srecStartAddress "^S7[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum |
| 49 | syn match srecStartAddress "^S8[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum |
| 50 | syn match srecStartAddress "^S9[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum |
| 51 | |
| 52 | " alternating highlight per byte for easier reading |
| 53 | syn match srecDataOdd "[0-9a-fA-F]\{2}" contained nextgroup=srecDataEven,srecChecksum |
| 54 | syn match srecDataEven "[0-9a-fA-F]\{2}" contained nextgroup=srecDataOdd,srecChecksum |
| 55 | " data bytes which should not exist |
| 56 | syn match srecDataUnexpected "[0-9a-fA-F]\{2}" contained nextgroup=srecDataUnexpected,srecChecksum |
| 57 | " Data digit pair regex usage also results in only highlighting the checksum |
| 58 | " if the number of data characters is even. |
| 59 | |
| 60 | syn match srecChecksum "[0-9a-fA-F]\{2}$" contained |
| 61 | |
| 62 | " Define the default highlighting. |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 63 | " Only when an item doesn't have highlighting yet |
Bram Moolenaar | 5837f1f | 2015-03-21 18:06:14 +0100 | [diff] [blame] | 64 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 65 | " The default methods for highlighting. Can be overridden later |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 66 | hi def link srecRecStart srecRecType |
| 67 | hi def link srecRecTypeUnknown srecRecType |
| 68 | hi def link srecRecType WarningMsg |
| 69 | hi def link srecByteCount Constant |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 70 | hi def srecAddressFieldUnknown term=italic cterm=italic gui=italic |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 71 | hi def link srecNoAddress DiffAdd |
| 72 | hi def link srecDataAddress Comment |
| 73 | hi def link srecRecCount srecNoAddress |
| 74 | hi def link srecStartAddress srecDataAddress |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 75 | hi def srecDataOdd term=bold cterm=bold gui=bold |
| 76 | hi def srecDataEven term=NONE cterm=NONE gui=NONE |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 77 | hi def link srecDataUnexpected Error |
| 78 | hi def link srecChecksum DiffChange |
Bram Moolenaar | 5837f1f | 2015-03-21 18:06:14 +0100 | [diff] [blame] | 79 | |
Bram Moolenaar | 5837f1f | 2015-03-21 18:06:14 +0100 | [diff] [blame] | 80 | |
| 81 | let b:current_syntax = "srec" |
| 82 | |
| 83 | " vim: ts=8 |