comparison runtime/syntax/idl.vim @ 3281:af1e8a1714c2

Update runtime files.
author Bram Moolenaar <bram@vim.org>
date Fri, 20 Jan 2012 21:08:56 +0100
parents dc8197342755
children 46763b01cd9a
comparison
equal deleted inserted replaced
3280:aa265b7165cc 3281:af1e8a1714c2
1 " Vim syntax file 1 " Vim syntax file
2 " Language: IDL (Interface Description Language) 2 " Language: IDL (Interface Description Language)
3 " Created By: Jody Goldberg 3 " Created By: Jody Goldberg
4 " Maintainer: Michael Geddes <vim@frog.wheelycreek.net> 4 " Maintainer: Michael Geddes <vim@frog.wheelycreek.net>
5 " Last Change: Thu Apr 13 2006 5 " Last Change: 2012 Jan 11
6 6
7 7
8 " This is an experiment. IDL's structure is simple enough to permit a full 8 " This is an experiment. IDL's structure is simple enough to permit a full
9 " grammar based approach to rather than using a few heuristics. The result 9 " grammar based approach to rather than using a few heuristics. The result
10 " is large and somewhat repetative but seems to work. 10 " is large and somewhat repetative but seems to work.
15 " The more complex of the extensions are disabled by defining idl_no_extensions. 15 " The more complex of the extensions are disabled by defining idl_no_extensions.
16 " 16 "
17 " History: 17 " History:
18 " 2.0: Michael's new version 18 " 2.0: Michael's new version
19 " 2.1: Support for Vim 7 spell (Anduin Withers) 19 " 2.1: Support for Vim 7 spell (Anduin Withers)
20 " 20 "
21 21
22 if exists("b:current_syntax") 22 if exists("b:current_syntax")
23 finish 23 finish
24 endif 24 endif
25 25
26 if exists("idlsyntax_showerror") 26 let s:cpo_save = &cpo
27 syn match idlError +\S+ skipwhite skipempty nextgroup=idlError 27 try
28 endif 28 set cpo&vim
29
30 syn region idlCppQuote start='\<cpp_quote\s*(' end=')' contains=idlString
31
32 " Misc basic
33 syn match idlId contained "[a-zA-Z][a-zA-Z0-9_]*" skipwhite skipempty nextgroup=idlEnumComma,idlEnumNumber
34 syn match idlEnumComma contained ","
35 syn match idlEnumNumber contained "=" skipwhite skipempty nextgroup=idlString,idlLiteral
36 syn match idlSemiColon contained ";"
37 syn match idlCommaArg contained "," skipempty skipwhite nextgroup=idlSimpDecl
38 syn region idlArraySize1 contained start=:\[: end=:\]: skipempty skipwhite nextgroup=idlArraySize1,idlError,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral
39 syn match idlSimpDecl contained "[a-zA-Z][a-zA-Z0-9_]*" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlCommaArg,idlArraySize1
40 syn region idlString contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+ contains=@Spell
41 syn match idlLiteral contained "[1-9]\d*\(\.\d*\)\="
42 syn match idlLiteral contained "0"
43 syn match idlLiteral contained "\.\d\+"
44 syn match idlLiteral contained "0x[0-9A-Fa-f]\+"
45 syn match idlLiteral contained "0[0-7]\+"
46 syn keyword idlLiteral contained TRUE FALSE
47
48 " Comments
49 syn keyword idlTodo contained TODO FIXME XXX
50 syn region idlComment start="/\*" end="\*/" contains=idlTodo,@Spell
51 syn match idlComment "//.*" contains=idlTodo,@Spell
52 syn match idlCommentError "\*/"
53
54 " C style Preprocessor
55 syn region idlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+
56 syn match idlIncluded contained "<[^>]*>"
57 syn match idlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString
58 syn region idlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=idlComment,idlCommentError
59 syn region idlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString
60
61 " Constants
62 syn keyword idlConst const skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt
63
64 " Attribute
65 syn keyword idlROAttr readonly skipempty skipwhite nextgroup=idlAttr
66 syn keyword idlAttr attribute skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType
67
68 " Types
69 syn region idlD4 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral
70 syn keyword idlSeqType contained sequence skipempty skipwhite nextgroup=idlD4
71 syn keyword idlBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl
72 syn keyword idlBaseTypeInt contained short long skipempty skipwhite nextgroup=idlSimpDecl
73 syn keyword idlBaseType contained unsigned skipempty skipwhite nextgroup=idlBaseTypeInt
74 syn region idlD1 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral
75 syn keyword idlBaseType contained string skipempty skipwhite nextgroup=idlD1,idlSimpDecl
76 syn match idlBaseType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlSimpDecl
77
78 " Modules
79 syn region idlModuleContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule
80 syn match idlModuleName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon
81 syn keyword idlModule module skipempty skipwhite nextgroup=idlModuleName
82
83 " Interfaces
84 syn cluster idlCommentable contains=idlComment
85 syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections
86
87 syn region idlInterfaceContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
88 syn match idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom
89 syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent
90 syn match idlInherit contained ":" skipempty skipwhite nextgroup=idlInheritFrom
91 syn match idlInterfaceName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon
92 syn keyword idlInterface interface dispinterface skipempty skipwhite nextgroup=idlInterfaceName
93 syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError
94 syn match idlSectionColon contained ":"
95
96
97 syn match idlLibraryName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon
98 syn keyword idlLibrary library skipempty skipwhite nextgroup=idlLibraryName
99 syn region idlLibraryContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface
100
101 syn keyword idlImportlib contained importlib skipempty skipwhite nextgroup=idlStringArg
102 syn region idlStringArg contained start="(" end=")" contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket
103
104 syn keyword idlCoclass coclass contained skipempty skipwhite nextgroup=idlCoclassName
105 syn match idlCoclassName "[a-zA-Z0-9_]\+" contained skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon
106
107 syn region idlCoclassDefinition contained start="{" end="}" contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon
108 syn region idlCoclassAttributes contained start=+\[+ end=+]+ skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute
109 syn keyword idlCoclassAttribute contained default source
110 "syn keyword idlInterface interface skipempty skipwhite nextgroup=idlInterfaceStubName
111
112 syn match idlImportString +"\f\+"+ skipempty skipwhite nextgroup=idlError,idlSemiColon
113 syn keyword idlImport import skipempty skipwhite nextgroup=idlImportString
114
115 syn region idlAttributes start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment
116 syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default
117 if !exists('idl_no_ms_extensions')
118 syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation
119 endif
120 syn region idlAttributeParam contained start="(" end=")" contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket
121 " skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
122 syn match idlErrorBrace contained "}"
123 syn match idlErrorBracket contained ")"
124 syn match idlErrorSquareBracket contained "\]"
125
126 syn match idlUuid contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+
127
128 " Raises
129 syn keyword idlRaises contained raises skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
130
131 " Context
132 syn keyword idlContext contained context skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
133
134 " Operation
135 syn match idlParmList contained "," skipempty skipwhite nextgroup=idlOpParms
136 syn region idlArraySize contained start="\[" end="\]" skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
137 syn match idlParmName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlParmList,idlArraySize
138 syn keyword idlParmInt contained short long skipempty skipwhite nextgroup=idlParmName
139 syn keyword idlParmType contained unsigned skipempty skipwhite nextgroup=idlParmInt
140 syn region idlD3 contained start="<" end=">" skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral
141 syn keyword idlParmType contained string skipempty skipwhite nextgroup=idlD3,idlParmName
142 syn keyword idlParmType contained void float double char boolean octet any skipempty skipwhite nextgroup=idlParmName
143 syn match idlParmType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName
144 syn keyword idlOpParms contained in out inout skipempty skipwhite nextgroup=idlParmType
145
146 if !exists('idl_no_ms_extensions')
147 syn keyword idlOpParms contained retval optional skipempty skipwhite nextgroup=idlParmType
148 syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType
149
150 syn keyword idlVariantType contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE
151 syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType
152 endif
153
154 syn region idlOpContents contained start="(" end=")" skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable
155 syn match idlOpName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlOpContents
156 syn keyword idlOpInt contained short long skipempty skipwhite nextgroup=idlOpName
157 syn region idlD2 contained start="<" end=">" skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral
158 syn keyword idlOp contained unsigned skipempty skipwhite nextgroup=idlOpInt
159 syn keyword idlOp contained string skipempty skipwhite nextgroup=idlD2,idlOpName
160 syn keyword idlOp contained void float double char boolean octet any skipempty skipwhite nextgroup=idlOpName
161 syn match idlOp contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName
162 syn keyword idlOp contained void skipempty skipwhite nextgroup=idlOpName
163 syn keyword idlOneWayOp contained oneway skipempty skipwhite nextgroup=idOp
164
165 " Enum
166 syn region idlEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable
167 syn match idlEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlEnumContents
168 syn keyword idlEnum enum skipempty skipwhite nextgroup=idlEnumName,idlEnumContents
169
170 " Typedef
171 syn keyword idlTypedef typedef skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError
172
173 if !exists('idl_no_extensions')
174 syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite
175
176 syn region idlDefAttributes contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError
177
178 syn keyword idlDefBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlTypedefDecl,idlError
179 syn keyword idlDefBaseTypeInt contained short long skipempty skipwhite nextgroup=idlTypedefDecl,idlError
180 syn match idlDefOtherType contained +\<\k\+\>+ skipempty nextgroup=idlTypedefDecl,idlError
181 " syn keyword idlDefSeqType contained sequence skipempty skipwhite nextgroup=idlD4
182
183 " Enum typedef
184 syn keyword idlDefEnum contained enum skipempty skipwhite nextgroup=idlDefEnumName,idlDefEnumContents
185 syn match idlDefEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl
186 syn region idlDefEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes
187
188 syn match idlTypedefDecl contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlError,idlSemiColon
189 endif
190
191 " Struct
192 syn region idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion
193 syn match idlStructName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent
194 syn keyword idlStruct struct skipempty skipwhite nextgroup=idlStructName
195
196 " Exception
197 syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName
198
199 " Union
200 syn match idlColon contained ":" skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt
201 syn region idlCaseLabel contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString
202 syn keyword idlCase contained case skipempty skipwhite nextgroup=idlCaseLabel
203 syn keyword idlCase contained default skipempty skipwhite nextgroup=idlColon
204 syn region idlUnionContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase
205 syn region idlSwitchType contained start="(" end=")" skipempty skipwhite nextgroup=idlUnionContent
206 syn keyword idlUnionSwitch contained switch skipempty skipwhite nextgroup=idlSwitchType
207 syn match idlUnionName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlUnionSwitch
208 syn keyword idlUnion union skipempty skipwhite nextgroup=idlUnionName
209
210 if !exists('idl_no_extensions')
211 syn sync match idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
212 syn sync maxlines=1000 minlines=100
213 else
214 syn sync lines=200
215 endif
216 " syn sync fromstart
217
218 if !exists("did_idl_syntax_inits")
219 let did_idl_syntax_inits = 1
220 " The default methods for highlighting. Can be overridden later
221 command -nargs=+ HiLink hi def link <args>
222
223 HiLink idlInclude Include
224 HiLink idlPreProc PreProc
225 HiLink idlPreCondit PreCondit
226 HiLink idlDefine Macro
227 HiLink idlIncluded String
228 HiLink idlString String
229 HiLink idlComment Comment
230 HiLink idlTodo Todo
231 HiLink idlLiteral Number
232 HiLink idlUuid Number
233 HiLink idlType Type
234 HiLink idlVariantType idlType
235
236 HiLink idlModule Keyword
237 HiLink idlInterface Keyword
238 HiLink idlEnum Keyword
239 HiLink idlStruct Keyword
240 HiLink idlUnion Keyword
241 HiLink idlTypedef Keyword
242 HiLink idlException Keyword
243 HiLink idlTypedefOtherTypeQualifier keyword
244
245 HiLink idlModuleName Typedef
246 HiLink idlInterfaceName Typedef
247 HiLink idlEnumName Typedef
248 HiLink idlStructName Typedef
249 HiLink idlUnionName Typedef
250
251 HiLink idlBaseTypeInt idlType
252 HiLink idlBaseType idlType
253 HiLink idlSeqType idlType
254 HiLink idlD1 Paren
255 HiLink idlD2 Paren
256 HiLink idlD3 Paren
257 HiLink idlD4 Paren
258 "HiLink idlArraySize Paren
259 "HiLink idlArraySize1 Paren
260 HiLink idlModuleContent Paren
261 HiLink idlUnionContent Paren
262 HiLink idlStructContent Paren
263 HiLink idlEnumContents Paren
264 HiLink idlInterfaceContent Paren
265
266 HiLink idlSimpDecl Identifier
267 HiLink idlROAttr StorageClass
268 HiLink idlAttr Keyword
269 HiLink idlConst StorageClass
270
271 HiLink idlOneWayOp StorageClass
272 HiLink idlOp idlType
273 HiLink idlParmType idlType
274 HiLink idlOpName Function
275 HiLink idlOpParms SpecialComment
276 HiLink idlParmName Identifier
277 HiLink idlInheritFrom Identifier
278 HiLink idlAttribute SpecialComment
279
280 HiLink idlId Constant
281 "HiLink idlCase Keyword
282 HiLink idlCaseLabel Constant
283
284 HiLink idlErrorBracket Error
285 HiLink idlErrorBrace Error
286 HiLink idlErrorSquareBracket Error
287
288 HiLink idlImport Keyword
289 HiLink idlImportString idlString
290 HiLink idlCoclassAttribute StorageClass
291 HiLink idlLibrary Keyword
292 HiLink idlImportlib Keyword
293 HiLink idlCoclass Keyword
294 HiLink idlLibraryName Typedef
295 HiLink idlCoclassName Typedef
296 " hi idlLibraryContent guifg=red
297 HiLink idlTypedefDecl Typedef
298 HiLink idlDefEnum Keyword
299 HiLink idlDefv1Enum Keyword
300 HiLink idlDefEnumName Typedef
301 HiLink idlDefEnumContents Paren
302 HiLink idlDefBaseTypeInt idlType
303 HiLink idlDefBaseType idlType
304 HiLink idlDefSeqType idlType
305 HiLink idlInterfaceSections Label
306 29
307 if exists("idlsyntax_showerror") 30 if exists("idlsyntax_showerror")
308 if exists("idlsyntax_showerror_soft") 31 syn match idlError +\S+ skipwhite skipempty nextgroup=idlError
309 hi default idlError guibg=#d0ffd0 32 endif
310 else 33
311 HiLink idlError Error 34 syn region idlCppQuote start='\<cpp_quote\s*(' end=')' contains=idlString
35
36 " Misc basic
37 syn match idlId contained "[a-zA-Z][a-zA-Z0-9_]*" skipwhite skipempty nextgroup=idlEnumComma,idlEnumNumber
38 syn match idlEnumComma contained ","
39 syn match idlEnumNumber contained "=" skipwhite skipempty nextgroup=idlString,idlLiteral
40 syn match idlSemiColon contained ";"
41 syn match idlCommaArg contained "," skipempty skipwhite nextgroup=idlSimpDecl
42 syn region idlArraySize1 contained start=:\[: end=:\]: skipempty skipwhite nextgroup=idlArraySize1,idlError,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral
43 syn match idlSimpDecl contained "[a-zA-Z][a-zA-Z0-9_]*" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlCommaArg,idlArraySize1
44 syn region idlString contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+ contains=@Spell
45 syn match idlLiteral contained "[1-9]\d*\(\.\d*\)\="
46 syn match idlLiteral contained "0"
47 syn match idlLiteral contained "\.\d\+"
48 syn match idlLiteral contained "0x[0-9A-Fa-f]\+"
49 syn match idlLiteral contained "0[0-7]\+"
50 syn keyword idlLiteral contained TRUE FALSE
51
52 " Comments
53 syn keyword idlTodo contained TODO FIXME XXX
54 syn region idlComment start="/\*" end="\*/" contains=idlTodo,@Spell
55 syn match idlComment "//.*" contains=idlTodo,@Spell
56 syn match idlCommentError "\*/"
57
58 " C style Preprocessor
59 syn region idlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+
60 syn match idlIncluded contained "<[^>]*>"
61 syn match idlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString
62 syn region idlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=idlComment,idlCommentError
63 syn region idlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString
64
65 " Constants
66 syn keyword idlConst const skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt
67
68 " Attribute
69 syn keyword idlROAttr readonly skipempty skipwhite nextgroup=idlAttr
70 syn keyword idlAttr attribute skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType
71
72 " Types
73 syn region idlD4 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral
74 syn keyword idlSeqType contained sequence skipempty skipwhite nextgroup=idlD4
75 syn keyword idlBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl
76 syn keyword idlBaseTypeInt contained short long skipempty skipwhite nextgroup=idlSimpDecl
77 syn keyword idlBaseType contained unsigned skipempty skipwhite nextgroup=idlBaseTypeInt
78 syn region idlD1 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral
79 syn keyword idlBaseType contained string skipempty skipwhite nextgroup=idlD1,idlSimpDecl
80 syn match idlBaseType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlSimpDecl
81
82 " Modules
83 syn region idlModuleContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule
84 syn match idlModuleName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon
85 syn keyword idlModule module skipempty skipwhite nextgroup=idlModuleName
86
87 " Interfaces
88 syn cluster idlCommentable contains=idlComment
89 syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections
90
91 syn region idlInterfaceContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
92 syn match idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom
93 syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent
94 syn match idlInherit contained ":" skipempty skipwhite nextgroup=idlInheritFrom
95 syn match idlInterfaceName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon
96 syn keyword idlInterface interface dispinterface skipempty skipwhite nextgroup=idlInterfaceName
97 syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError
98 syn match idlSectionColon contained ":"
99
100
101 syn match idlLibraryName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon
102 syn keyword idlLibrary library skipempty skipwhite nextgroup=idlLibraryName
103 syn region idlLibraryContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface
104
105 syn keyword idlImportlib contained importlib skipempty skipwhite nextgroup=idlStringArg
106 syn region idlStringArg contained start="(" end=")" contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket
107
108 syn keyword idlCoclass coclass contained skipempty skipwhite nextgroup=idlCoclassName
109 syn match idlCoclassName "[a-zA-Z0-9_]\+" contained skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon
110
111 syn region idlCoclassDefinition contained start="{" end="}" contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon
112 syn region idlCoclassAttributes contained start=+\[+ end=+]+ skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute
113 syn keyword idlCoclassAttribute contained default source
114 "syn keyword idlInterface interface skipempty skipwhite nextgroup=idlInterfaceStubName
115
116 syn match idlImportString +"\f\+"+ skipempty skipwhite nextgroup=idlError,idlSemiColon
117 syn keyword idlImport import skipempty skipwhite nextgroup=idlImportString
118
119 syn region idlAttributes start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment
120 syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default
121 if !exists('idl_no_ms_extensions')
122 syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation
123 endif
124 syn region idlAttributeParam contained start="(" end=")" contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket
125 " skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
126 syn match idlErrorBrace contained "}"
127 syn match idlErrorBracket contained ")"
128 syn match idlErrorSquareBracket contained "\]"
129
130 syn match idlUuid contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+
131
132 " Raises
133 syn keyword idlRaises contained raises skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
134
135 " Context
136 syn keyword idlContext contained context skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
137
138 " Operation
139 syn match idlParmList contained "," skipempty skipwhite nextgroup=idlOpParms
140 syn region idlArraySize contained start="\[" end="\]" skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
141 syn match idlParmName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlParmList,idlArraySize
142 syn keyword idlParmInt contained short long skipempty skipwhite nextgroup=idlParmName
143 syn keyword idlParmType contained unsigned skipempty skipwhite nextgroup=idlParmInt
144 syn region idlD3 contained start="<" end=">" skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral
145 syn keyword idlParmType contained string skipempty skipwhite nextgroup=idlD3,idlParmName
146 syn keyword idlParmType contained void float double char boolean octet any skipempty skipwhite nextgroup=idlParmName
147 syn match idlParmType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName
148 syn keyword idlOpParms contained in out inout skipempty skipwhite nextgroup=idlParmType
149
150 if !exists('idl_no_ms_extensions')
151 syn keyword idlOpParms contained retval optional skipempty skipwhite nextgroup=idlParmType
152 syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType
153
154 syn keyword idlVariantType contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE
155 syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType
156 endif
157
158 syn region idlOpContents contained start="(" end=")" skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable
159 syn match idlOpName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlOpContents
160 syn keyword idlOpInt contained short long skipempty skipwhite nextgroup=idlOpName
161 syn region idlD2 contained start="<" end=">" skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral
162 syn keyword idlOp contained unsigned skipempty skipwhite nextgroup=idlOpInt
163 syn keyword idlOp contained string skipempty skipwhite nextgroup=idlD2,idlOpName
164 syn keyword idlOp contained void float double char boolean octet any skipempty skipwhite nextgroup=idlOpName
165 syn match idlOp contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName
166 syn keyword idlOp contained void skipempty skipwhite nextgroup=idlOpName
167 syn keyword idlOneWayOp contained oneway skipempty skipwhite nextgroup=idOp
168
169 " Enum
170 syn region idlEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable
171 syn match idlEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlEnumContents
172 syn keyword idlEnum enum skipempty skipwhite nextgroup=idlEnumName,idlEnumContents
173
174 " Typedef
175 syn keyword idlTypedef typedef skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError
176
177 if !exists('idl_no_extensions')
178 syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite
179
180 syn region idlDefAttributes contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError
181
182 syn keyword idlDefBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlTypedefDecl,idlError
183 syn keyword idlDefBaseTypeInt contained short long skipempty skipwhite nextgroup=idlTypedefDecl,idlError
184 syn match idlDefOtherType contained +\<\k\+\>+ skipempty nextgroup=idlTypedefDecl,idlError
185 " syn keyword idlDefSeqType contained sequence skipempty skipwhite nextgroup=idlD4
186
187 " Enum typedef
188 syn keyword idlDefEnum contained enum skipempty skipwhite nextgroup=idlDefEnumName,idlDefEnumContents
189 syn match idlDefEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl
190 syn region idlDefEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes
191
192 syn match idlTypedefDecl contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlError,idlSemiColon
193 endif
194
195 " Struct
196 syn region idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion
197 syn match idlStructName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent
198 syn keyword idlStruct struct skipempty skipwhite nextgroup=idlStructName
199
200 " Exception
201 syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName
202
203 " Union
204 syn match idlColon contained ":" skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt
205 syn region idlCaseLabel contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString
206 syn keyword idlCase contained case skipempty skipwhite nextgroup=idlCaseLabel
207 syn keyword idlCase contained default skipempty skipwhite nextgroup=idlColon
208 syn region idlUnionContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase
209 syn region idlSwitchType contained start="(" end=")" skipempty skipwhite nextgroup=idlUnionContent
210 syn keyword idlUnionSwitch contained switch skipempty skipwhite nextgroup=idlSwitchType
211 syn match idlUnionName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlUnionSwitch
212 syn keyword idlUnion union skipempty skipwhite nextgroup=idlUnionName
213
214 if !exists('idl_no_extensions')
215 syn sync match idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
216 syn sync maxlines=1000 minlines=100
217 else
218 syn sync lines=200
219 endif
220 " syn sync fromstart
221
222 if !exists("did_idl_syntax_inits")
223 let did_idl_syntax_inits = 1
224 " The default methods for highlighting. Can be overridden later
225 command -nargs=+ HiLink hi def link <args>
226
227 HiLink idlInclude Include
228 HiLink idlPreProc PreProc
229 HiLink idlPreCondit PreCondit
230 HiLink idlDefine Macro
231 HiLink idlIncluded String
232 HiLink idlString String
233 HiLink idlComment Comment
234 HiLink idlTodo Todo
235 HiLink idlLiteral Number
236 HiLink idlUuid Number
237 HiLink idlType Type
238 HiLink idlVariantType idlType
239
240 HiLink idlModule Keyword
241 HiLink idlInterface Keyword
242 HiLink idlEnum Keyword
243 HiLink idlStruct Keyword
244 HiLink idlUnion Keyword
245 HiLink idlTypedef Keyword
246 HiLink idlException Keyword
247 HiLink idlTypedefOtherTypeQualifier keyword
248
249 HiLink idlModuleName Typedef
250 HiLink idlInterfaceName Typedef
251 HiLink idlEnumName Typedef
252 HiLink idlStructName Typedef
253 HiLink idlUnionName Typedef
254
255 HiLink idlBaseTypeInt idlType
256 HiLink idlBaseType idlType
257 HiLink idlSeqType idlType
258 HiLink idlD1 Paren
259 HiLink idlD2 Paren
260 HiLink idlD3 Paren
261 HiLink idlD4 Paren
262 "HiLink idlArraySize Paren
263 "HiLink idlArraySize1 Paren
264 HiLink idlModuleContent Paren
265 HiLink idlUnionContent Paren
266 HiLink idlStructContent Paren
267 HiLink idlEnumContents Paren
268 HiLink idlInterfaceContent Paren
269
270 HiLink idlSimpDecl Identifier
271 HiLink idlROAttr StorageClass
272 HiLink idlAttr Keyword
273 HiLink idlConst StorageClass
274
275 HiLink idlOneWayOp StorageClass
276 HiLink idlOp idlType
277 HiLink idlParmType idlType
278 HiLink idlOpName Function
279 HiLink idlOpParms SpecialComment
280 HiLink idlParmName Identifier
281 HiLink idlInheritFrom Identifier
282 HiLink idlAttribute SpecialComment
283
284 HiLink idlId Constant
285 "HiLink idlCase Keyword
286 HiLink idlCaseLabel Constant
287
288 HiLink idlErrorBracket Error
289 HiLink idlErrorBrace Error
290 HiLink idlErrorSquareBracket Error
291
292 HiLink idlImport Keyword
293 HiLink idlImportString idlString
294 HiLink idlCoclassAttribute StorageClass
295 HiLink idlLibrary Keyword
296 HiLink idlImportlib Keyword
297 HiLink idlCoclass Keyword
298 HiLink idlLibraryName Typedef
299 HiLink idlCoclassName Typedef
300 " hi idlLibraryContent guifg=red
301 HiLink idlTypedefDecl Typedef
302 HiLink idlDefEnum Keyword
303 HiLink idlDefv1Enum Keyword
304 HiLink idlDefEnumName Typedef
305 HiLink idlDefEnumContents Paren
306 HiLink idlDefBaseTypeInt idlType
307 HiLink idlDefBaseType idlType
308 HiLink idlDefSeqType idlType
309 HiLink idlInterfaceSections Label
310
311 if exists("idlsyntax_showerror")
312 if exists("idlsyntax_showerror_soft")
313 hi default idlError guibg=#d0ffd0
314 else
315 HiLink idlError Error
316 endif
312 endif 317 endif
313 endif 318 delcommand HiLink
314 delcommand HiLink 319 endif
315 endif 320
316 321 let b:current_syntax = "idl"
317 let b:current_syntax = "idl" 322 finally
318 323 let &cpo = s:cpo_save
324 unlet s:cpo_save
325 endtry
319 " vim: sw=2 et 326 " vim: sw=2 et