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 region sliceIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 24syn match sliceIncluded display contained "<[^>]*>" 25syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded 26 27" Double-include guards 28syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$" 29 30" Strings and characters 31syn region sliceString start=+"+ end=+"+ 32 33" Numbers (shamelessly ripped from c.vim, only slightly modified) 34"integer number, or floating point number without a dot and with "f". 35syn case ignore 36syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal 37syn match sliceNumber display contained "\d\+" 38"hex number 39syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" 40" Flag the first zero of an octal number as something special 41syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero 42syn match sliceOctalZero display contained "\<0" 43syn match sliceFloat display contained "\d\+f" 44"floating point number, with dot, optional exponent 45syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" 46"floating point number, starting with a dot, optional exponent 47syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" 48"floating point number, without dot, with exponent 49syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" 50" flag an octal number with wrong digits 51syn case match 52 53 54" Comments 55syn region sliceComment start="/\*" end="\*/" 56syn match sliceComment "//.*" 57 58syn sync ccomment sliceComment 59 60" Define the default highlighting. 61" For version 5.7 and earlier: only when not done already 62" For version 5.8 and later: only when an item doesn't have highlighting yet 63if version >= 508 || !exists("did_slice_syn_inits") 64 if version < 508 65 let did_slice_syn_inits = 1 66 command -nargs=+ HiLink hi link <args> 67 else 68 command -nargs=+ HiLink hi def link <args> 69 endif 70 71 HiLink sliceComment Comment 72 HiLink sliceConstruct Keyword 73 HiLink sliceType Type 74 HiLink sliceString String 75 HiLink sliceIncluded String 76 HiLink sliceQualifier Keyword 77 HiLink sliceInclude Include 78 HiLink sliceGuard PreProc 79 HiLink sliceBoolean Boolean 80 HiLink sliceFloat Number 81 HiLink sliceNumber Number 82 HiLink sliceOctal Number 83 HiLink sliceOctalZero Special 84 HiLink sliceNumberError Special 85 86 delcommand HiLink 87endif 88 89let b:current_syntax = "slice" 90 91" vim: ts=8 92