2 " Language: Slice (ZeroC's Specification Language for Ice)
3 " Maintainer: Morel Bodin <slice06@nym.hush.com>
4 " Last Change: 2005 Dec 03
6 " For version 5.x: Clear all syntax items
7 " For version 6.x: Quit when a syntax file was already loaded
10 elseif exists("b:current_syntax")
16 syn keyword sliceType bool byte double float int long short string void
17 syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
18 syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct
19 syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
20 syn keyword sliceBoolean false true
23 syn match sliceIncluded display contained "<[^>]*>"
24 syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded
26 " Double-include guards
27 syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$"
29 " Strings and characters
30 syn region sliceString start=+"+ end=+"+
32 " Numbers (shamelessly ripped from c.vim, only slightly modified)
33 "integer number, or floating point number without a dot and with "f".
35 syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal
36 syn match sliceNumber display contained "\d\+"
38 syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
39 " Flag the first zero of an octal number as something special
40 syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero
41 syn match sliceOctalZero display contained "\<0"
42 syn match sliceFloat display contained "\d\+f"
43 "floating point number, with dot, optional exponent
44 syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
45 "floating point number, starting with a dot, optional exponent
46 syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
47 "floating point number, without dot, with exponent
48 syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
49 " flag an octal number with wrong digits
54 syn region sliceComment start="/\*" end="\*/"
55 syn match sliceComment "//.*"
57 syn sync ccomment sliceComment
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
62 if version >= 508 || !exists("did_slice_syn_inits")
64 let did_slice_syn_inits = 1
65 command -nargs=+ HiLink hi link <args>
67 command -nargs=+ HiLink hi def link <args>
70 HiLink sliceComment Comment
71 HiLink sliceConstruct Keyword
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
88 let b:current_syntax = "slice"