Hi Bram, hello uC guys,

I did a bit of an overhaul to the existing Intel HEX syntax file and
sent it to the maintainer. After 4 days I got the message "Mail delivery
failed: returning message to sender" from my provider. So if nobody else
knows how to contact him, I would suggest to switch maintainership.

Overview of the changes in hex.vim:
- hex file format fully implemented
- detection and highlighting of some errors in the hex file
- alternating highlighting of data nibble pairs for improved readability
- folding added

Also included in this patch is a syntax file for a similar file format
called "Motorola S-Record". The changes above, if read as features, all
apply to this srec.vim as well, with the exception of folding, which
doesn't make much sense here AFAICT.
The structure of both syntax files has been kept pretty similar to each
other.


diff -r b64f0df9399c runtime/filetype.vim
--- a/runtime/filetype.vim      Tue Feb 17 17:50:26 2015 +0100
+++ b/runtime/filetype.vim      Mon Mar 02 20:26:23 2015 +0100
@@ -1267,8 +1267,8 @@
 " Mplayer config
 au BufNewFile,BufRead mplayer.conf,*/.mplayer/config   setf mplayerconf
 
-" Moterola S record
-au BufNewFile,BufRead *.s19,*.s28,*.s37                setf srec
+" Motorola S-record
+au BufNewFile,BufRead *.s19,*.s28,*.s37,*.mot,*.srec   setf srec
 
 " Mrxvtrc
 au BufNewFile,BufRead mrxvtrc,.mrxvtrc         setf mrxvtrc
diff -r b64f0df9399c runtime/syntax/hex.vim
--- a/runtime/syntax/hex.vim    Tue Feb 17 17:50:26 2015 +0100
+++ b/runtime/syntax/hex.vim    Mon Mar 02 20:26:23 2015 +0100
@@ -1,7 +1,28 @@
 " Vim syntax file
-" Language:    Intel hex MCS51
-" Maintainer:  Sams Ricahrd <[email protected]>
-" Last Change: 2003 Apr 25
+" Language:    Intel HEX
+" Maintainer:  Markus Heidelberg <[email protected]>
+" Last Change: 2015 Feb 24
+
+" Each record (line) is built as follows:
+"
+"    field       digits          states
+"
+"  +----------+
+"  | start    |  1 (':')         hexRecStart
+"  +----------+
+"  | count    |  2               hexDataByteCount
+"  +----------+
+"  | address  |  4               hexNoAddress, hexDataAddress, 
(hexAddressFieldUnknown)
+"  +----------+
+"  | type     |  2               hexRecType, (hexRecTypeUnknown)
+"  +----------+
+"  | data     |  0..510          hexDataOdd, hexDataEven, hexExtendedAddress, 
hexStartAddress, (hexDataFieldUnknown, hexDataUnexpected)
+"  +----------+
+"  | checksum |  2               hexChecksum
+"  +----------+
+"
+" States in parentheses in the upper format description indicate that they
+" should not appear in a valid file.
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -11,21 +32,39 @@
   finish
 endif
 
-syn case ignore
+syn match hexRecStart "^:"
 
-" storage types
+syn match hexDataByteCount "^:[0-9a-fA-F]\{2}" contains=hexRecStart 
nextgroup=hexAddress
 
-syn match hexChecksum  "[0-9a-fA-F]\{2}$"
-syn match hexAdress  "^:[0-9a-fA-F]\{6}" contains=hexDataByteCount
-syn match hexRecType  "^:[0-9a-fA-F]\{8}" contains=hexAdress
-syn match hexDataByteCount  contained "^:[0-9a-fA-F]\{2}" contains=hexStart
-syn match hexStart contained "^:"
-syn match hexExtAdrRec "^:02000002[0-9a-fA-F]\{4}" contains=hexSpecRec
-syn match hexExtLinAdrRec "^:02000004[0-9a-fA-F]\{4}" contains=hexSpecRec
-syn match hexSpecRec contained "^:0[02]00000[124]" contains=hexStart
-syn match hexEOF "^:00000001" contains=hexStart
+syn match hexAddress "[0-9a-fA-F]\{4}" transparent contained 
nextgroup=hexRecTypeUnknown,hexRecType
+" The address field groups include the record type field in the last 2
+" characters, the proper match for highlighting follows below.
+syn match hexAddressFieldUnknown "^:[0-9a-fA-F]\{8}"      
contains=hexDataByteCount nextgroup=hexDataFieldUnknown,hexChecksum
+syn match hexDataAddress         "^:[0-9a-fA-F]\{6}00"    
contains=hexDataByteCount nextgroup=hexDataOdd,hexChecksum
+syn match hexNoAddress           "^:[0-9a-fA-F]\{6}01"    
contains=hexDataByteCount nextgroup=hexDataUnexpected,hexChecksum
+syn match hexNoAddress           "^:[0-9a-fA-F]\{6}0[24]" 
contains=hexDataByteCount nextgroup=hexExtendedAddress
+syn match hexNoAddress           "^:[0-9a-fA-F]\{6}0[35]" 
contains=hexDataByteCount nextgroup=hexStartAddress
 
-syn case match
+syn match hexRecTypeUnknown "[0-9a-fA-F]\{2}" contained
+syn match hexRecType        "0[0-5]"          contained
+
+syn match hexDataFieldUnknown "[0-9a-fA-F]\{2}" contained 
nextgroup=hexDataFieldUnknown,hexChecksum
+" alternating highlight per byte for easier reading
+syn match hexDataOdd          "[0-9a-fA-F]\{2}" contained 
nextgroup=hexDataEven,hexChecksum
+syn match hexDataEven         "[0-9a-fA-F]\{2}" contained 
nextgroup=hexDataOdd,hexChecksum
+" data bytes which should not exist
+syn match hexDataUnexpected   "[0-9a-fA-F]\{2}" contained 
nextgroup=hexDataUnexpected,hexChecksum
+" Data digit pair regex usage also results in only highlighting the checksum
+" if the number of data characters is even.
+
+" special data fields
+syn match hexExtendedAddress "[0-9a-fA-F]\{4}" contained 
nextgroup=hexDataUnexpected,hexChecksum
+syn match hexStartAddress    "[0-9a-fA-F]\{8}" contained 
nextgroup=hexDataUnexpected,hexChecksum
+
+syn match hexChecksum "[0-9a-fA-F]\{2}$" contained
+
+" Folding Data Records below an Extended Segment/Linear Address Record
+syn region hexExtAdrBlock start="^:[0-9a-fA-F]\{7}[24]" 
skip="^:[0-9a-fA-F]\{7}0" end="^:"me=s-1 fold transparent
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
@@ -38,16 +77,21 @@
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  " The default methods for highlighting.  Can be overridden later
-  HiLink hexStart              SpecialKey
-  HiLink hexDataByteCount      Constant
-  HiLink hexAdress             Comment
-  HiLink hexRecType            WarningMsg
-  HiLink hexChecksum           Search
-  HiLink hexExtAdrRec          hexAdress
-  HiLink hexEOF                        hexSpecRec
-  HiLink hexExtLinAdrRec       hexAdress
-  HiLink hexSpecRec            DiffAdd
+  " The default methods for highlighting. Can be overridden later
+  HiLink hexRecStart            hexRecType
+  HiLink hexDataByteCount       Constant
+  hi def hexAddressFieldUnknown term=italic cterm=italic gui=italic
+  HiLink hexDataAddress         Comment
+  HiLink hexNoAddress           DiffAdd
+  HiLink hexRecTypeUnknown      hexRecType
+  HiLink hexRecType             WarningMsg
+  hi def hexDataFieldUnknown    term=italic cterm=italic gui=italic
+  hi def hexDataOdd             term=bold cterm=bold gui=bold
+  hi def hexDataEven            term=NONE cterm=NONE gui=NONE
+  HiLink hexDataUnexpected      Error
+  HiLink hexExtendedAddress     hexDataAddress
+  HiLink hexStartAddress        hexDataAddress
+  HiLink hexChecksum            DiffChange
 
   delcommand HiLink
 endif
diff -r b64f0df9399c runtime/syntax/srec.vim
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/runtime/syntax/srec.vim   Mon Mar 02 20:26:23 2015 +0100
@@ -0,0 +1,96 @@
+" Vim syntax file
+" Language:    Motorola S-Record
+" Maintainer:  Markus Heidelberg <[email protected]>
+" Last Change: 2015 Feb 24
+
+" Each record (line) is built as follows:
+"
+"    field       digits          states
+"
+"  +----------+
+"  | start    |  1 ('S')         srecRecStart
+"  +----------+
+"  | type     |  1               srecRecType, (srecRecTypeUnknown)
+"  +----------+
+"  | count    |  2               srecByteCount
+"  +----------+
+"  | address  |  4/6/8           srecNoAddress, srecDataAddress, srecRecCount, 
srecStartAddress, (srecAddressFieldUnknown)
+"  +----------+
+"  | data     |  0..504/502/500  srecDataOdd, srecDataEven, 
(srecDataUnexpected)
+"  +----------+
+"  | checksum |  2               srecChecksum
+"  +----------+
+"
+" States in parentheses in the upper format description indicate that they
+" should not appear in a valid file.
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+syn match srecRecStart "^S"
+
+syn match srecRecTypeUnknown "^S."        contains=srecRecStart
+syn match srecRecType        "^S[0-35-9]" contains=srecRecStart
+
+syn match srecByteCount "^S.[0-9a-fA-F]\{2}"        
contains=srecRecTypeUnknown nextgroup=srecAddressFieldUnknown,srecChecksum
+syn match srecByteCount "^S[0-35-9][0-9a-fA-F]\{2}" contains=srecRecType
+
+syn match srecAddressFieldUnknown "[0-9a-fA-F]\{2}" contained 
nextgroup=srecAddressFieldUnknown,srecChecksum
+
+syn match srecNoAddress    "^S0[0-9a-fA-F]\{6}"  contains=srecByteCount 
nextgroup=srecDataOdd,srecChecksum
+syn match srecDataAddress  "^S1[0-9a-fA-F]\{6}"  contains=srecByteCount 
nextgroup=srecDataOdd,srecChecksum
+syn match srecDataAddress  "^S2[0-9a-fA-F]\{8}"  contains=srecByteCount 
nextgroup=srecDataOdd,srecChecksum
+syn match srecDataAddress  "^S3[0-9a-fA-F]\{10}" contains=srecByteCount 
nextgroup=srecDataOdd,srecChecksum
+syn match srecRecCount     "^S5[0-9a-fA-F]\{6}"  contains=srecByteCount 
nextgroup=srecDataUnexpected,srecChecksum
+syn match srecRecCount     "^S6[0-9a-fA-F]\{8}"  contains=srecByteCount 
nextgroup=srecDataUnexpected,srecChecksum
+syn match srecStartAddress "^S7[0-9a-fA-F]\{10}" contains=srecByteCount 
nextgroup=srecDataUnexpected,srecChecksum
+syn match srecStartAddress "^S8[0-9a-fA-F]\{8}"  contains=srecByteCount 
nextgroup=srecDataUnexpected,srecChecksum
+syn match srecStartAddress "^S9[0-9a-fA-F]\{6}"  contains=srecByteCount 
nextgroup=srecDataUnexpected,srecChecksum
+
+" alternating highlight per byte for easier reading
+syn match srecDataOdd        "[0-9a-fA-F]\{2}" contained 
nextgroup=srecDataEven,srecChecksum
+syn match srecDataEven       "[0-9a-fA-F]\{2}" contained 
nextgroup=srecDataOdd,srecChecksum
+" data bytes which should not exist
+syn match srecDataUnexpected "[0-9a-fA-F]\{2}" contained 
nextgroup=srecDataUnexpected,srecChecksum
+" Data digit pair regex usage also results in only highlighting the checksum
+" if the number of data characters is even.
+
+syn match srecChecksum "[0-9a-fA-F]\{2}$" contained
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_srec_syntax_inits")
+  if version < 508
+    let did_srec_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  " The default methods for highlighting. Can be overridden later
+  HiLink srecRecStart            srecRecType
+  HiLink srecRecTypeUnknown      srecRecType
+  HiLink srecRecType             WarningMsg
+  HiLink srecByteCount           Constant
+  hi def srecAddressFieldUnknown term=italic cterm=italic gui=italic
+  HiLink srecNoAddress           DiffAdd
+  HiLink srecDataAddress         Comment
+  HiLink srecRecCount            srecNoAddress
+  HiLink srecStartAddress        srecDataAddress
+  hi def srecDataOdd             term=bold cterm=bold gui=bold
+  hi def srecDataEven            term=NONE cterm=NONE gui=NONE
+  HiLink srecDataUnexpected      Error
+  HiLink srecChecksum            DiffChange
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "srec"
+
+" vim: ts=8

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui