blob: 202aee75995f76cfb35a054a3ba8d45b3f506525 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Slice (ZeroC's Specification Language for Ice)
Bram Moolenaar9372a112005-12-06 19:59:18 +00003" Maintainer: Morel Bodin <slice06@nym.hush.com>
4" Last Change: 2005 Dec 03
Bram Moolenaar071d4272004-06-13 20:20:40 +00005
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02006" quit when a syntax file was already loaded
7if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00008 finish
9endif
10
11" The Slice keywords
12
13syn keyword sliceType bool byte double float int long short string void
14syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
Bram Moolenaar9372a112005-12-06 19:59:18 +000015syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct
Bram Moolenaar071d4272004-06-13 20:20:40 +000016syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
17syn keyword sliceBoolean false true
18
19" Include directives
Bram Moolenaarac7bd632013-03-19 11:35:58 +010020syn region sliceIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
Bram Moolenaar071d4272004-06-13 20:20:40 +000021syn match sliceIncluded display contained "<[^>]*>"
22syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded
23
24" Double-include guards
25syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$"
26
27" Strings and characters
28syn region sliceString start=+"+ end=+"+
29
30" Numbers (shamelessly ripped from c.vim, only slightly modified)
31"integer number, or floating point number without a dot and with "f".
32syn case ignore
33syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal
34syn match sliceNumber display contained "\d\+"
35"hex number
36syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
37" Flag the first zero of an octal number as something special
38syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero
39syn match sliceOctalZero display contained "\<0"
40syn match sliceFloat display contained "\d\+f"
41"floating point number, with dot, optional exponent
42syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
43"floating point number, starting with a dot, optional exponent
44syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
45"floating point number, without dot, with exponent
46syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
47" flag an octal number with wrong digits
48syn case match
49
50
51" Comments
52syn region sliceComment start="/\*" end="\*/"
53syn match sliceComment "//.*"
54
55syn sync ccomment sliceComment
56
57" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020058" Only when an item doesn't have highlighting yet
59command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000060
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020061HiLink sliceComment Comment
62HiLink sliceConstruct Keyword
63HiLink sliceType Type
64HiLink sliceString String
65HiLink sliceIncluded String
66HiLink sliceQualifier Keyword
67HiLink sliceInclude Include
68HiLink sliceGuard PreProc
69HiLink sliceBoolean Boolean
70HiLink sliceFloat Number
71HiLink sliceNumber Number
72HiLink sliceOctal Number
73HiLink sliceOctalZero Special
74HiLink sliceNumberError Special
Bram Moolenaar071d4272004-06-13 20:20:40 +000075
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020076delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +000077
78let b:current_syntax = "slice"
79
80" vim: ts=8