xref: /vim-8.2.3635/runtime/syntax/slice.vim (revision cb03397a)
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