1" Vim syntax file 2" Language: Slice (ZeroC's Specification Language for Ice) 3" Maintainer: Morel Bodin <[email protected]> 4" Last Change: 2005 Dec 03 5 6" For version 5.x: Clear all syntax items 7" For version 6.x: Quit when a syntax file was already loaded 8if version < 600 9 syntax clear 10elseif exists("b:current_syntax") 11 finish 12endif 13 14" The Slice keywords 15 16syn keyword sliceType bool byte double float int long short string void 17syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws 18syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct 19syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws 20syn keyword sliceBoolean false true 21 22" Include directives 23syn match sliceIncluded display contained "<[^>]*>" 24syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded 25 26" Double-include guards 27syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$" 28 29" Strings and characters 30syn region sliceString start=+"+ end=+"+ 31 32" Numbers (shamelessly ripped from c.vim, only slightly modified) 33"integer number, or floating point number without a dot and with "f". 34syn case ignore 35syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal 36syn match sliceNumber display contained "\d\+" 37"hex number 38syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" 39" Flag the first zero of an octal number as something special 40syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero 41syn match sliceOctalZero display contained "\<0" 42syn match sliceFloat display contained "\d\+f" 43"floating point number, with dot, optional exponent 44syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" 45"floating point number, starting with a dot, optional exponent 46syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" 47"floating point number, without dot, with exponent 48syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" 49" flag an octal number with wrong digits 50syn case match 51 52 53" Comments 54syn region sliceComment start="/\*" end="\*/" 55syn match sliceComment "//.*" 56 57syn sync ccomment sliceComment 58 59" Define the default highlighting. 60" For version 5.7 and earlier: only when not done already 61" For version 5.8 and later: only when an item doesn't have highlighting yet 62if version >= 508 || !exists("did_slice_syn_inits") 63 if version < 508 64 let did_slice_syn_inits = 1 65 command -nargs=+ HiLink hi link <args> 66 else 67 command -nargs=+ HiLink hi def link <args> 68 endif 69 70 HiLink sliceComment Comment 71 HiLink sliceConstruct Keyword 72 HiLink sliceType Type 73 HiLink sliceString String 74 HiLink sliceIncluded String 75 HiLink sliceQualifier Keyword 76 HiLink sliceInclude Include 77 HiLink sliceGuard PreProc 78 HiLink sliceBoolean Boolean 79 HiLink sliceFloat Number 80 HiLink sliceNumber Number 81 HiLink sliceOctal Number 82 HiLink sliceOctalZero Special 83 HiLink sliceNumberError Special 84 85 delcommand HiLink 86endif 87 88let b:current_syntax = "slice" 89 90" vim: ts=8 91