xref: /vim-8.2.3635/runtime/syntax/idl.vim (revision 6c391a74)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:    IDL (Interface Description Language)
39e54a0e7SBram Moolenaar" Created By:  Jody Goldberg
49e54a0e7SBram Moolenaar" Maintainer:  Michael Geddes <[email protected]>
56be7f873SBram Moolenaar" Last Change:  2012 Jan 11
69e54a0e7SBram Moolenaar
7071d4279SBram Moolenaar
8071d4279SBram Moolenaar" This is an experiment.  IDL's structure is simple enough to permit a full
9071d4279SBram Moolenaar" grammar based approach to rather than using a few heuristics.  The result
10*6c391a74SBram Moolenaar" is large and somewhat repetitive but seems to work.
11071d4279SBram Moolenaar
125eb86f91SBram Moolenaar" There are some Microsoft extensions to idl files that are here.  Some of
135eb86f91SBram Moolenaar" them are disabled by defining idl_no_ms_extensions.
145eb86f91SBram Moolenaar"
155eb86f91SBram Moolenaar" The more complex of the extensions are disabled by defining idl_no_extensions.
165eb86f91SBram Moolenaar"
179e54a0e7SBram Moolenaar" History:
189e54a0e7SBram Moolenaar" 2.0: Michael's new version
199e54a0e7SBram Moolenaar" 2.1: Support for Vim 7 spell (Anduin Withers)
209e54a0e7SBram Moolenaar"
215eb86f91SBram Moolenaar
225eb86f91SBram Moolenaarif exists("b:current_syntax")
23071d4279SBram Moolenaar  finish
24071d4279SBram Moolenaarendif
25071d4279SBram Moolenaar
266be7f873SBram Moolenaarlet s:cpo_save = &cpo
276be7f873SBram Moolenaartry
286be7f873SBram Moolenaar  set cpo&vim
296be7f873SBram Moolenaar
305eb86f91SBram Moolenaar  if exists("idlsyntax_showerror")
315eb86f91SBram Moolenaar    syn match idlError +\S+ skipwhite skipempty nextgroup=idlError
325eb86f91SBram Moolenaar  endif
335eb86f91SBram Moolenaar
345eb86f91SBram Moolenaar  syn region idlCppQuote start='\<cpp_quote\s*(' end=')' contains=idlString
355eb86f91SBram Moolenaar
36071d4279SBram Moolenaar  " Misc basic
375eb86f91SBram Moolenaar  syn match   idlId          contained "[a-zA-Z][a-zA-Z0-9_]*" skipwhite skipempty nextgroup=idlEnumComma,idlEnumNumber
385eb86f91SBram Moolenaar  syn match   idlEnumComma   contained ","
395eb86f91SBram Moolenaar  syn match   idlEnumNumber  contained "=" skipwhite skipempty nextgroup=idlString,idlLiteral
40071d4279SBram Moolenaar  syn match   idlSemiColon   contained ";"
41071d4279SBram Moolenaar  syn match   idlCommaArg    contained ","                      skipempty skipwhite nextgroup=idlSimpDecl
425eb86f91SBram Moolenaar  syn region  idlArraySize1  contained start=:\[: end=:\]:      skipempty skipwhite nextgroup=idlArraySize1,idlError,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral
435eb86f91SBram Moolenaar  syn match   idlSimpDecl    contained "[a-zA-Z][a-zA-Z0-9_]*"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlCommaArg,idlArraySize1
449e54a0e7SBram Moolenaar  syn region  idlString      contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+ contains=@Spell
45071d4279SBram Moolenaar  syn match   idlLiteral     contained "[1-9]\d*\(\.\d*\)\="
465eb86f91SBram Moolenaar  syn match   idlLiteral     contained "0"
47071d4279SBram Moolenaar  syn match   idlLiteral     contained "\.\d\+"
485eb86f91SBram Moolenaar  syn match   idlLiteral     contained "0x[0-9A-Fa-f]\+"
495eb86f91SBram Moolenaar  syn match   idlLiteral     contained "0[0-7]\+"
50071d4279SBram Moolenaar  syn keyword idlLiteral     contained TRUE FALSE
51071d4279SBram Moolenaar
52071d4279SBram Moolenaar  " Comments
53071d4279SBram Moolenaar  syn keyword idlTodo        contained TODO FIXME XXX
549e54a0e7SBram Moolenaar  syn region idlComment      start="/\*"  end="\*/" contains=idlTodo,@Spell
559e54a0e7SBram Moolenaar  syn match  idlComment      "//.*" contains=idlTodo,@Spell
56071d4279SBram Moolenaar  syn match  idlCommentError "\*/"
57071d4279SBram Moolenaar
58071d4279SBram Moolenaar  " C style Preprocessor
59071d4279SBram Moolenaar  syn region idlIncluded    contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+
60071d4279SBram Moolenaar  syn match  idlIncluded    contained "<[^>]*>"
61071d4279SBram Moolenaar  syn match  idlInclude     "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString
62071d4279SBram Moolenaar  syn region idlPreCondit   start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)"  skip="\\$"  end="$" contains=idlComment,idlCommentError
63071d4279SBram Moolenaar  syn region idlDefine      start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString
64071d4279SBram Moolenaar
65071d4279SBram Moolenaar  " Constants
66071d4279SBram Moolenaar  syn keyword idlConst    const                             skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt
67071d4279SBram Moolenaar
68071d4279SBram Moolenaar  " Attribute
69071d4279SBram Moolenaar  syn keyword idlROAttr   readonly                          skipempty skipwhite nextgroup=idlAttr
70071d4279SBram Moolenaar  syn keyword idlAttr     attribute                         skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType
71071d4279SBram Moolenaar
72071d4279SBram Moolenaar  " Types
73071d4279SBram Moolenaar  syn region  idlD4          contained start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral
74071d4279SBram Moolenaar  syn keyword idlSeqType     contained sequence             skipempty skipwhite nextgroup=idlD4
75071d4279SBram Moolenaar  syn keyword idlBaseType    contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl
76071d4279SBram Moolenaar  syn keyword idlBaseTypeInt contained short long           skipempty skipwhite nextgroup=idlSimpDecl
77071d4279SBram Moolenaar  syn keyword idlBaseType    contained unsigned             skipempty skipwhite nextgroup=idlBaseTypeInt
78071d4279SBram Moolenaar  syn region  idlD1          contained start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral
79071d4279SBram Moolenaar  syn keyword idlBaseType    contained string               skipempty skipwhite nextgroup=idlD1,idlSimpDecl
80071d4279SBram Moolenaar  syn match   idlBaseType    contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*"  skipempty skipwhite nextgroup=idlSimpDecl
81071d4279SBram Moolenaar
82071d4279SBram Moolenaar  " Modules
835eb86f91SBram Moolenaar  syn region  idlModuleContent contained start="{" end="}"  skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule
845eb86f91SBram Moolenaar  syn match   idlModuleName  contained "[a-zA-Z0-9_]\+"     skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon
85071d4279SBram Moolenaar  syn keyword idlModule      module                         skipempty skipwhite nextgroup=idlModuleName
86071d4279SBram Moolenaar
87071d4279SBram Moolenaar  " Interfaces
885eb86f91SBram Moolenaar  syn cluster idlCommentable contains=idlComment
895eb86f91SBram Moolenaar  syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections
905eb86f91SBram Moolenaar
915eb86f91SBram Moolenaar  syn region  idlInterfaceContent contained start="{" end="}"   skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
92071d4279SBram Moolenaar  syn match   idlInheritFrom2 contained ","                     skipempty skipwhite nextgroup=idlInheritFrom
93071d4279SBram Moolenaar  syn match   idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent
94071d4279SBram Moolenaar  syn match   idlInherit contained ":"                            skipempty skipwhite nextgroup=idlInheritFrom
955eb86f91SBram Moolenaar  syn match   idlInterfaceName contained "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon
965eb86f91SBram Moolenaar  syn keyword idlInterface     interface dispinterface          skipempty skipwhite nextgroup=idlInterfaceName
975eb86f91SBram Moolenaar  syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError
985eb86f91SBram Moolenaar  syn match   idlSectionColon contained ":"
99071d4279SBram Moolenaar
100071d4279SBram Moolenaar
1015eb86f91SBram Moolenaar  syn match   idlLibraryName  contained  "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon
1025eb86f91SBram Moolenaar  syn keyword idlLibrary      library                           skipempty skipwhite nextgroup=idlLibraryName
1035eb86f91SBram Moolenaar  syn region  idlLibraryContent contained start="{" end="}"     skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface
1045eb86f91SBram Moolenaar
1055eb86f91SBram Moolenaar  syn keyword idlImportlib contained importlib                  skipempty skipwhite nextgroup=idlStringArg
1065eb86f91SBram Moolenaar  syn region idlStringArg contained start="(" end=")"           contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket
1075eb86f91SBram Moolenaar
1085eb86f91SBram Moolenaar  syn keyword idlCoclass coclass contained                      skipempty skipwhite nextgroup=idlCoclassName
1095eb86f91SBram Moolenaar  syn match   idlCoclassName "[a-zA-Z0-9_]\+" contained         skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon
1105eb86f91SBram Moolenaar
1115eb86f91SBram Moolenaar  syn region idlCoclassDefinition contained start="{" end="}"   contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon
1125eb86f91SBram Moolenaar  syn region idlCoclassAttributes contained start=+\[+ end=+]+  skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute
1135eb86f91SBram Moolenaar  syn keyword idlCoclassAttribute contained default source
1145eb86f91SBram Moolenaar  "syn keyword idlInterface       interface                      skipempty skipwhite nextgroup=idlInterfaceStubName
1155eb86f91SBram Moolenaar
1165eb86f91SBram Moolenaar  syn match idlImportString       +"\f\+"+                      skipempty skipwhite nextgroup=idlError,idlSemiColon
1175eb86f91SBram Moolenaar  syn keyword idlImport           import                        skipempty skipwhite nextgroup=idlImportString
1185eb86f91SBram Moolenaar
1195eb86f91SBram Moolenaar  syn region  idlAttributes start="\[" end="\]"                 contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment
1205eb86f91SBram Moolenaar  syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default
1215eb86f91SBram Moolenaar  if !exists('idl_no_ms_extensions')
1225eb86f91SBram Moolenaar  syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation
1235eb86f91SBram Moolenaar  endif
1245eb86f91SBram Moolenaar  syn region idlAttributeParam contained start="(" end=")"      contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket
1255eb86f91SBram Moolenaar  " skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
1265eb86f91SBram Moolenaar  syn match idlErrorBrace contained "}"
1275eb86f91SBram Moolenaar  syn match idlErrorBracket contained ")"
1285eb86f91SBram Moolenaar  syn match idlErrorSquareBracket contained "\]"
1295eb86f91SBram Moolenaar
1305eb86f91SBram Moolenaar  syn match idlUuid         contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+
1315eb86f91SBram Moolenaar
132071d4279SBram Moolenaar  " Raises
1335eb86f91SBram Moolenaar  syn keyword idlRaises     contained raises               skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
134071d4279SBram Moolenaar
135071d4279SBram Moolenaar  " Context
1365eb86f91SBram Moolenaar  syn keyword idlContext    contained context              skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
137071d4279SBram Moolenaar
138071d4279SBram Moolenaar  " Operation
139071d4279SBram Moolenaar  syn match   idlParmList   contained ","                  skipempty skipwhite nextgroup=idlOpParms
140071d4279SBram Moolenaar  syn region  idlArraySize  contained start="\[" end="\]"  skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
141071d4279SBram Moolenaar  syn match   idlParmName   contained "[a-zA-Z0-9_]\+"     skipempty skipwhite nextgroup=idlParmList,idlArraySize
142071d4279SBram Moolenaar  syn keyword idlParmInt    contained short long           skipempty skipwhite nextgroup=idlParmName
143071d4279SBram Moolenaar  syn keyword idlParmType   contained unsigned             skipempty skipwhite nextgroup=idlParmInt
144071d4279SBram Moolenaar  syn region  idlD3         contained start="<" end=">"    skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral
145071d4279SBram Moolenaar  syn keyword idlParmType   contained string               skipempty skipwhite nextgroup=idlD3,idlParmName
146071d4279SBram Moolenaar  syn keyword idlParmType   contained void float double char boolean octet any    skipempty skipwhite nextgroup=idlParmName
147071d4279SBram Moolenaar  syn match   idlParmType   contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName
148071d4279SBram Moolenaar  syn keyword idlOpParms    contained in out inout         skipempty skipwhite nextgroup=idlParmType
149071d4279SBram Moolenaar
1505eb86f91SBram Moolenaar  if !exists('idl_no_ms_extensions')
1515eb86f91SBram Moolenaar  syn keyword idlOpParms    contained retval optional      skipempty skipwhite nextgroup=idlParmType
1525eb86f91SBram Moolenaar    syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType
1535eb86f91SBram Moolenaar
1545eb86f91SBram Moolenaar    syn keyword idlVariantType  contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE
1555eb86f91SBram Moolenaar    syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType
1565eb86f91SBram Moolenaar  endif
1575eb86f91SBram Moolenaar
1585eb86f91SBram Moolenaar  syn region  idlOpContents contained start="(" end=")"    skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable
159071d4279SBram Moolenaar  syn match   idlOpName   contained "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlOpContents
160071d4279SBram Moolenaar  syn keyword idlOpInt    contained short long             skipempty skipwhite nextgroup=idlOpName
161071d4279SBram Moolenaar  syn region  idlD2       contained start="<" end=">"      skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral
162071d4279SBram Moolenaar  syn keyword idlOp       contained unsigned               skipempty skipwhite nextgroup=idlOpInt
163071d4279SBram Moolenaar  syn keyword idlOp       contained string                 skipempty skipwhite nextgroup=idlD2,idlOpName
164071d4279SBram Moolenaar  syn keyword idlOp       contained void float double char boolean octet any  skipempty skipwhite nextgroup=idlOpName
165071d4279SBram Moolenaar  syn match   idlOp       contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName
166071d4279SBram Moolenaar  syn keyword idlOp       contained void                   skipempty skipwhite nextgroup=idlOpName
167071d4279SBram Moolenaar  syn keyword idlOneWayOp contained oneway                 skipempty skipwhite nextgroup=idOp
168071d4279SBram Moolenaar
169071d4279SBram Moolenaar  " Enum
1705eb86f91SBram Moolenaar  syn region  idlEnumContents contained start="{" end="}"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable
171071d4279SBram Moolenaar  syn match   idlEnumName contained "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlEnumContents
1725eb86f91SBram Moolenaar  syn keyword idlEnum     enum                             skipempty skipwhite nextgroup=idlEnumName,idlEnumContents
173071d4279SBram Moolenaar
174071d4279SBram Moolenaar  " Typedef
1755eb86f91SBram Moolenaar  syn keyword idlTypedef typedef                          skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError
1765eb86f91SBram Moolenaar
1775eb86f91SBram Moolenaar  if !exists('idl_no_extensions')
1785eb86f91SBram Moolenaar    syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite
1795eb86f91SBram Moolenaar
1805eb86f91SBram Moolenaar    syn region  idlDefAttributes        contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError
1815eb86f91SBram Moolenaar
1825eb86f91SBram Moolenaar    syn keyword idlDefBaseType      contained float double char boolean octet any  skipempty skipwhite nextgroup=idlTypedefDecl,idlError
1835eb86f91SBram Moolenaar    syn keyword idlDefBaseTypeInt   contained short long                           skipempty skipwhite nextgroup=idlTypedefDecl,idlError
1845eb86f91SBram Moolenaar    syn match idlDefOtherType       contained +\<\k\+\>+ skipempty                 nextgroup=idlTypedefDecl,idlError
1855eb86f91SBram Moolenaar    " syn keyword idlDefSeqType     contained sequence                             skipempty skipwhite nextgroup=idlD4
1865eb86f91SBram Moolenaar
1875eb86f91SBram Moolenaar    " Enum typedef
1885eb86f91SBram Moolenaar    syn keyword idlDefEnum          contained enum skipempty                       skipwhite nextgroup=idlDefEnumName,idlDefEnumContents
1895eb86f91SBram Moolenaar    syn match   idlDefEnumName      contained "[a-zA-Z0-9_]\+"                     skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl
1905eb86f91SBram Moolenaar    syn region  idlDefEnumContents  contained start="{" end="}"                    skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes
1915eb86f91SBram Moolenaar
1925eb86f91SBram Moolenaar    syn match   idlTypedefDecl      contained "[a-zA-Z0-9_]\+"                     skipempty skipwhite nextgroup=idlError,idlSemiColon
1935eb86f91SBram Moolenaar  endif
194071d4279SBram Moolenaar
195071d4279SBram Moolenaar  " Struct
1965eb86f91SBram Moolenaar  syn region  idlStructContent   contained start="{" end="}"   skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion
197071d4279SBram Moolenaar  syn match   idlStructName      contained "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlStructContent
198071d4279SBram Moolenaar  syn keyword idlStruct          struct                        skipempty skipwhite nextgroup=idlStructName
199071d4279SBram Moolenaar
200071d4279SBram Moolenaar  " Exception
201071d4279SBram Moolenaar  syn keyword idlException       exception                     skipempty skipwhite nextgroup=idlStructName
202071d4279SBram Moolenaar
203071d4279SBram Moolenaar  " Union
204071d4279SBram Moolenaar  syn match   idlColon            contained ":"                skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt
205071d4279SBram Moolenaar  syn region  idlCaseLabel        contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString
206071d4279SBram Moolenaar  syn keyword idlCase             contained case               skipempty skipwhite nextgroup=idlCaseLabel
207071d4279SBram Moolenaar  syn keyword idlCase             contained default            skipempty skipwhite nextgroup=idlColon
2085eb86f91SBram Moolenaar  syn region  idlUnionContent     contained start="{" end="}"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase
209071d4279SBram Moolenaar  syn region  idlSwitchType       contained start="(" end=")"  skipempty skipwhite nextgroup=idlUnionContent
210071d4279SBram Moolenaar  syn keyword idlUnionSwitch      contained switch             skipempty skipwhite nextgroup=idlSwitchType
211071d4279SBram Moolenaar  syn match   idlUnionName        contained "[a-zA-Z0-9_]\+"   skipempty skipwhite nextgroup=idlUnionSwitch
212071d4279SBram Moolenaar  syn keyword idlUnion            union                        skipempty skipwhite nextgroup=idlUnionName
213071d4279SBram Moolenaar
2145eb86f91SBram Moolenaar  if !exists('idl_no_extensions')
2155eb86f91SBram Moolenaar    syn sync match  idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
2165eb86f91SBram Moolenaar    syn sync maxlines=1000 minlines=100
217071d4279SBram Moolenaar  else
2185eb86f91SBram Moolenaar    syn sync lines=200
219071d4279SBram Moolenaar  endif
2205eb86f91SBram Moolenaar  " syn sync fromstart
2215eb86f91SBram Moolenaar
2225eb86f91SBram Moolenaar  if !exists("did_idl_syntax_inits")
2235eb86f91SBram Moolenaar    let did_idl_syntax_inits = 1
2245eb86f91SBram Moolenaar    " The default methods for highlighting.  Can be overridden later
225071d4279SBram Moolenaar
226f37506f6SBram Moolenaar    hi def link idlInclude             Include
227f37506f6SBram Moolenaar    hi def link idlPreProc             PreProc
228f37506f6SBram Moolenaar    hi def link idlPreCondit           PreCondit
229f37506f6SBram Moolenaar    hi def link idlDefine              Macro
230f37506f6SBram Moolenaar    hi def link idlIncluded            String
231f37506f6SBram Moolenaar    hi def link idlString              String
232f37506f6SBram Moolenaar    hi def link idlComment             Comment
233f37506f6SBram Moolenaar    hi def link idlTodo                Todo
234f37506f6SBram Moolenaar    hi def link idlLiteral             Number
235f37506f6SBram Moolenaar    hi def link idlUuid                Number
236f37506f6SBram Moolenaar    hi def link idlType                Type
237f37506f6SBram Moolenaar    hi def link idlVariantType         idlType
238071d4279SBram Moolenaar
239f37506f6SBram Moolenaar    hi def link idlModule              Keyword
240f37506f6SBram Moolenaar    hi def link idlInterface           Keyword
241f37506f6SBram Moolenaar    hi def link idlEnum                Keyword
242f37506f6SBram Moolenaar    hi def link idlStruct              Keyword
243f37506f6SBram Moolenaar    hi def link idlUnion               Keyword
244f37506f6SBram Moolenaar    hi def link idlTypedef             Keyword
245f37506f6SBram Moolenaar    hi def link idlException           Keyword
246f37506f6SBram Moolenaar    hi def link idlTypedefOtherTypeQualifier keyword
247071d4279SBram Moolenaar
248f37506f6SBram Moolenaar    hi def link idlModuleName          Typedef
249f37506f6SBram Moolenaar    hi def link idlInterfaceName       Typedef
250f37506f6SBram Moolenaar    hi def link idlEnumName            Typedef
251f37506f6SBram Moolenaar    hi def link idlStructName          Typedef
252f37506f6SBram Moolenaar    hi def link idlUnionName           Typedef
253071d4279SBram Moolenaar
254f37506f6SBram Moolenaar    hi def link idlBaseTypeInt         idlType
255f37506f6SBram Moolenaar    hi def link idlBaseType            idlType
256f37506f6SBram Moolenaar    hi def link idlSeqType             idlType
257f37506f6SBram Moolenaar    hi def link idlD1                  Paren
258f37506f6SBram Moolenaar    hi def link idlD2                  Paren
259f37506f6SBram Moolenaar    hi def link idlD3                  Paren
260f37506f6SBram Moolenaar    hi def link idlD4                  Paren
261f37506f6SBram Moolenaar    "hi def link idlArraySize          Paren
262f37506f6SBram Moolenaar    "hi def link idlArraySize1         Paren
263f37506f6SBram Moolenaar    hi def link idlModuleContent       Paren
264f37506f6SBram Moolenaar    hi def link idlUnionContent        Paren
265f37506f6SBram Moolenaar    hi def link idlStructContent       Paren
266f37506f6SBram Moolenaar    hi def link idlEnumContents        Paren
267f37506f6SBram Moolenaar    hi def link idlInterfaceContent    Paren
268071d4279SBram Moolenaar
269f37506f6SBram Moolenaar    hi def link idlSimpDecl            Identifier
270f37506f6SBram Moolenaar    hi def link idlROAttr              StorageClass
271f37506f6SBram Moolenaar    hi def link idlAttr                Keyword
272f37506f6SBram Moolenaar    hi def link idlConst               StorageClass
273071d4279SBram Moolenaar
274f37506f6SBram Moolenaar    hi def link idlOneWayOp            StorageClass
275f37506f6SBram Moolenaar    hi def link idlOp                  idlType
276f37506f6SBram Moolenaar    hi def link idlParmType            idlType
277f37506f6SBram Moolenaar    hi def link idlOpName              Function
278f37506f6SBram Moolenaar    hi def link idlOpParms             SpecialComment
279f37506f6SBram Moolenaar    hi def link idlParmName            Identifier
280f37506f6SBram Moolenaar    hi def link idlInheritFrom         Identifier
281f37506f6SBram Moolenaar    hi def link idlAttribute           SpecialComment
282071d4279SBram Moolenaar
283f37506f6SBram Moolenaar    hi def link idlId                  Constant
284f37506f6SBram Moolenaar    "hi def link idlCase               Keyword
285f37506f6SBram Moolenaar    hi def link idlCaseLabel           Constant
286071d4279SBram Moolenaar
287f37506f6SBram Moolenaar    hi def link idlErrorBracket        Error
288f37506f6SBram Moolenaar    hi def link idlErrorBrace          Error
289f37506f6SBram Moolenaar    hi def link idlErrorSquareBracket  Error
2905eb86f91SBram Moolenaar
291f37506f6SBram Moolenaar    hi def link idlImport              Keyword
292f37506f6SBram Moolenaar    hi def link idlImportString        idlString
293f37506f6SBram Moolenaar    hi def link idlCoclassAttribute    StorageClass
294f37506f6SBram Moolenaar    hi def link idlLibrary             Keyword
295f37506f6SBram Moolenaar    hi def link idlImportlib           Keyword
296f37506f6SBram Moolenaar    hi def link idlCoclass             Keyword
297f37506f6SBram Moolenaar    hi def link idlLibraryName         Typedef
298f37506f6SBram Moolenaar    hi def link idlCoclassName         Typedef
299f37506f6SBram Moolenaar    " hi def link idlLibraryContent guifg=red
300f37506f6SBram Moolenaar    hi def link idlTypedefDecl         Typedef
301f37506f6SBram Moolenaar    hi def link idlDefEnum             Keyword
302f37506f6SBram Moolenaar    hi def link idlDefv1Enum           Keyword
303f37506f6SBram Moolenaar    hi def link idlDefEnumName         Typedef
304f37506f6SBram Moolenaar    hi def link idlDefEnumContents     Paren
305f37506f6SBram Moolenaar    hi def link idlDefBaseTypeInt      idlType
306f37506f6SBram Moolenaar    hi def link idlDefBaseType         idlType
307f37506f6SBram Moolenaar    hi def link idlDefSeqType          idlType
308f37506f6SBram Moolenaar    hi def link idlInterfaceSections   Label
3095eb86f91SBram Moolenaar
3105eb86f91SBram Moolenaar    if exists("idlsyntax_showerror")
3115eb86f91SBram Moolenaar      if exists("idlsyntax_showerror_soft")
3125eb86f91SBram Moolenaar        hi default idlError guibg=#d0ffd0
3135eb86f91SBram Moolenaar      else
314f37506f6SBram Moolenaar        hi def link idlError Error
3155eb86f91SBram Moolenaar      endif
3165eb86f91SBram Moolenaar    endif
317071d4279SBram Moolenaar  endif
318071d4279SBram Moolenaar
319071d4279SBram Moolenaar  let b:current_syntax = "idl"
3206be7f873SBram Moolenaarfinally
3216be7f873SBram Moolenaar  let &cpo = s:cpo_save
3226be7f873SBram Moolenaar  unlet s:cpo_save
3236be7f873SBram Moolenaarendtry
3245eb86f91SBram Moolenaar" vim: sw=2 et
325