codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: IDL (Interface Description Language)3" Created By: Jody Goldberg4" Maintainer: Michael Geddes <vim@frog.wheelycreek.net>5" Last Change: 2012 Jan 116 7 8" This is an experiment. IDL's structure is simple enough to permit a full9" grammar based approach to rather than using a few heuristics. The result10" is large and somewhat repetitive but seems to work.11 12" There are some Microsoft extensions to idl files that are here. Some of13" them are disabled by defining idl_no_ms_extensions.14"15" The more complex of the extensions are disabled by defining idl_no_extensions.16"17" History:18" 2.0: Michael's new version19" 2.1: Support for Vim 7 spell (Anduin Withers)20"21 22if exists("b:current_syntax")23 finish24endif25 26let s:cpo_save = &cpo27try28 set cpo&vim29 30 if exists("idlsyntax_showerror")31 syn match idlError +\S+ skipwhite skipempty nextgroup=idlError32 endif33 34 syn region idlCppQuote start='\<cpp_quote\s*(' end=')' contains=idlString35 36 " Misc basic37 syn match idlId contained "[a-zA-Z][a-zA-Z0-9_]*" skipwhite skipempty nextgroup=idlEnumComma,idlEnumNumber38 syn match idlEnumComma contained ","39 syn match idlEnumNumber contained "=" skipwhite skipempty nextgroup=idlString,idlLiteral40 syn match idlSemiColon contained ";"41 syn match idlCommaArg contained "," skipempty skipwhite nextgroup=idlSimpDecl42 syn region idlArraySize1 contained start=:\[: end=:\]: skipempty skipwhite nextgroup=idlArraySize1,idlError,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral43 syn match idlSimpDecl contained "[a-zA-Z][a-zA-Z0-9_]*" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlCommaArg,idlArraySize144 syn region idlString contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+ contains=@Spell45 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 FALSE51 52 " Comments53 syn keyword idlTodo contained TODO FIXME XXX54 syn region idlComment start="/\*" end="\*/" contains=idlTodo,@Spell55 syn match idlComment "//.*" contains=idlTodo,@Spell56 syn match idlCommentError "\*/"57 58 " C style Preprocessor59 syn region idlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+60 syn match idlIncluded contained "<[^>]*>"61 syn match idlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString62 syn region idlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=idlComment,idlCommentError63 syn region idlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString64 65 " Constants66 syn keyword idlConst const skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt67 68 " Attribute69 syn keyword idlROAttr readonly skipempty skipwhite nextgroup=idlAttr70 syn keyword idlAttr attribute skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType71 72 " Types73 syn region idlD4 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral74 syn keyword idlSeqType contained sequence skipempty skipwhite nextgroup=idlD475 syn keyword idlBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl76 syn keyword idlBaseTypeInt contained short long skipempty skipwhite nextgroup=idlSimpDecl77 syn keyword idlBaseType contained unsigned skipempty skipwhite nextgroup=idlBaseTypeInt78 syn region idlD1 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral79 syn keyword idlBaseType contained string skipempty skipwhite nextgroup=idlD1,idlSimpDecl80 syn match idlBaseType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlSimpDecl81 82 " Modules83 syn region idlModuleContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule84 syn match idlModuleName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon85 syn keyword idlModule module skipempty skipwhite nextgroup=idlModuleName86 87 " Interfaces88 syn cluster idlCommentable contains=idlComment89 syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections90 91 syn region idlInterfaceContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable92 syn match idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom93 syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent94 syn match idlInherit contained ":" skipempty skipwhite nextgroup=idlInheritFrom95 syn match idlInterfaceName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon96 syn keyword idlInterface interface dispinterface skipempty skipwhite nextgroup=idlInterfaceName97 syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError98 syn match idlSectionColon contained ":"99 100 101 syn match idlLibraryName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon102 syn keyword idlLibrary library skipempty skipwhite nextgroup=idlLibraryName103 syn region idlLibraryContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface104 105 syn keyword idlImportlib contained importlib skipempty skipwhite nextgroup=idlStringArg106 syn region idlStringArg contained start="(" end=")" contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket107 108 syn keyword idlCoclass coclass contained skipempty skipwhite nextgroup=idlCoclassName109 syn match idlCoclassName "[a-zA-Z0-9_]\+" contained skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon110 111 syn region idlCoclassDefinition contained start="{" end="}" contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon112 syn region idlCoclassAttributes contained start=+\[+ end=+]+ skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute113 syn keyword idlCoclassAttribute contained default source114 "syn keyword idlInterface interface skipempty skipwhite nextgroup=idlInterfaceStubName115 116 syn match idlImportString +"\f\+"+ skipempty skipwhite nextgroup=idlError,idlSemiColon117 syn keyword idlImport import skipempty skipwhite nextgroup=idlImportString118 119 syn region idlAttributes start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment120 syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default121 if !exists('idl_no_ms_extensions')122 syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation123 endif124 syn region idlAttributeParam contained start="(" end=")" contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket125 " skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral126 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 " Raises133 syn keyword idlRaises contained raises skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon134 135 " Context136 syn keyword idlContext contained context skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon137 138 " Operation139 syn match idlParmList contained "," skipempty skipwhite nextgroup=idlOpParms140 syn region idlArraySize contained start="\[" end="\]" skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral141 syn match idlParmName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlParmList,idlArraySize142 syn keyword idlParmInt contained short long skipempty skipwhite nextgroup=idlParmName143 syn keyword idlParmType contained unsigned skipempty skipwhite nextgroup=idlParmInt144 syn region idlD3 contained start="<" end=">" skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral145 syn keyword idlParmType contained string skipempty skipwhite nextgroup=idlD3,idlParmName146 syn keyword idlParmType contained void float double char boolean octet any skipempty skipwhite nextgroup=idlParmName147 syn match idlParmType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName148 syn keyword idlOpParms contained in out inout skipempty skipwhite nextgroup=idlParmType149 150 if !exists('idl_no_ms_extensions')151 syn keyword idlOpParms contained retval optional skipempty skipwhite nextgroup=idlParmType152 syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType153 154 syn keyword idlVariantType contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE155 syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType156 endif157 158 syn region idlOpContents contained start="(" end=")" skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable159 syn match idlOpName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlOpContents160 syn keyword idlOpInt contained short long skipempty skipwhite nextgroup=idlOpName161 syn region idlD2 contained start="<" end=">" skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral162 syn keyword idlOp contained unsigned skipempty skipwhite nextgroup=idlOpInt163 syn keyword idlOp contained string skipempty skipwhite nextgroup=idlD2,idlOpName164 syn keyword idlOp contained void float double char boolean octet any skipempty skipwhite nextgroup=idlOpName165 syn match idlOp contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName166 syn keyword idlOp contained void skipempty skipwhite nextgroup=idlOpName167 syn keyword idlOneWayOp contained oneway skipempty skipwhite nextgroup=idOp168 169 " Enum170 syn region idlEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable171 syn match idlEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlEnumContents172 syn keyword idlEnum enum skipempty skipwhite nextgroup=idlEnumName,idlEnumContents173 174 " Typedef175 syn keyword idlTypedef typedef skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError176 177 if !exists('idl_no_extensions')178 syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite179 180 syn region idlDefAttributes contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError181 182 syn keyword idlDefBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlTypedefDecl,idlError183 syn keyword idlDefBaseTypeInt contained short long skipempty skipwhite nextgroup=idlTypedefDecl,idlError184 syn match idlDefOtherType contained +\<\k\+\>+ skipempty nextgroup=idlTypedefDecl,idlError185 " syn keyword idlDefSeqType contained sequence skipempty skipwhite nextgroup=idlD4186 187 " Enum typedef188 syn keyword idlDefEnum contained enum skipempty skipwhite nextgroup=idlDefEnumName,idlDefEnumContents189 syn match idlDefEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl190 syn region idlDefEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes191 192 syn match idlTypedefDecl contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlError,idlSemiColon193 endif194 195 " Struct196 syn region idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion197 syn match idlStructName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent198 syn keyword idlStruct struct skipempty skipwhite nextgroup=idlStructName199 200 " Exception201 syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName202 203 " Union204 syn match idlColon contained ":" skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt205 syn region idlCaseLabel contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString206 syn keyword idlCase contained case skipempty skipwhite nextgroup=idlCaseLabel207 syn keyword idlCase contained default skipempty skipwhite nextgroup=idlColon208 syn region idlUnionContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase209 syn region idlSwitchType contained start="(" end=")" skipempty skipwhite nextgroup=idlUnionContent210 syn keyword idlUnionSwitch contained switch skipempty skipwhite nextgroup=idlSwitchType211 syn match idlUnionName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlUnionSwitch212 syn keyword idlUnion union skipempty skipwhite nextgroup=idlUnionName213 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,@idlCommentable216 syn sync maxlines=1000 minlines=100217 else218 syn sync lines=200219 endif220 " syn sync fromstart221 222 if !exists("did_idl_syntax_inits")223 let did_idl_syntax_inits = 1224 " The default methods for highlighting. Can be overridden later225 226 hi def link idlInclude Include227 hi def link idlPreProc PreProc228 hi def link idlPreCondit PreCondit229 hi def link idlDefine Macro230 hi def link idlIncluded String231 hi def link idlString String232 hi def link idlComment Comment233 hi def link idlTodo Todo234 hi def link idlLiteral Number235 hi def link idlUuid Number236 hi def link idlType Type237 hi def link idlVariantType idlType238 239 hi def link idlModule Keyword240 hi def link idlInterface Keyword241 hi def link idlEnum Keyword242 hi def link idlStruct Keyword243 hi def link idlUnion Keyword244 hi def link idlTypedef Keyword245 hi def link idlException Keyword246 hi def link idlTypedefOtherTypeQualifier keyword247 248 hi def link idlModuleName Typedef249 hi def link idlInterfaceName Typedef250 hi def link idlEnumName Typedef251 hi def link idlStructName Typedef252 hi def link idlUnionName Typedef253 254 hi def link idlBaseTypeInt idlType255 hi def link idlBaseType idlType256 hi def link idlSeqType idlType257 hi def link idlD1 Paren258 hi def link idlD2 Paren259 hi def link idlD3 Paren260 hi def link idlD4 Paren261 "hi def link idlArraySize Paren262 "hi def link idlArraySize1 Paren263 hi def link idlModuleContent Paren264 hi def link idlUnionContent Paren265 hi def link idlStructContent Paren266 hi def link idlEnumContents Paren267 hi def link idlInterfaceContent Paren268 269 hi def link idlSimpDecl Identifier270 hi def link idlROAttr StorageClass271 hi def link idlAttr Keyword272 hi def link idlConst StorageClass273 274 hi def link idlOneWayOp StorageClass275 hi def link idlOp idlType276 hi def link idlParmType idlType277 hi def link idlOpName Function278 hi def link idlOpParms SpecialComment279 hi def link idlParmName Identifier280 hi def link idlInheritFrom Identifier281 hi def link idlAttribute SpecialComment282 283 hi def link idlId Constant284 "hi def link idlCase Keyword285 hi def link idlCaseLabel Constant286 287 hi def link idlErrorBracket Error288 hi def link idlErrorBrace Error289 hi def link idlErrorSquareBracket Error290 291 hi def link idlImport Keyword292 hi def link idlImportString idlString293 hi def link idlCoclassAttribute StorageClass294 hi def link idlLibrary Keyword295 hi def link idlImportlib Keyword296 hi def link idlCoclass Keyword297 hi def link idlLibraryName Typedef298 hi def link idlCoclassName Typedef299 " hi def link idlLibraryContent guifg=red300 hi def link idlTypedefDecl Typedef301 hi def link idlDefEnum Keyword302 hi def link idlDefv1Enum Keyword303 hi def link idlDefEnumName Typedef304 hi def link idlDefEnumContents Paren305 hi def link idlDefBaseTypeInt idlType306 hi def link idlDefBaseType idlType307 hi def link idlDefSeqType idlType308 hi def link idlInterfaceSections Label309 310 if exists("idlsyntax_showerror")311 if exists("idlsyntax_showerror_soft")312 hi default idlError guibg=#d0ffd0313 else314 hi def link idlError Error315 endif316 endif317 endif318 319 let b:current_syntax = "idl"320finally321 let &cpo = s:cpo_save322 unlet s:cpo_save323endtry324" vim: sw=2 et325 