1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: MS IDL (Microsoft dialect of Interface Description Language) 3071d4279SBram Moolenaar" Maintainer: Vadim Zeitlin <[email protected]> 45dc6252dSBram Moolenaar" Last Change: 2012 Feb 12 by Thilo Six 5071d4279SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8071d4279SBram Moolenaar finish 9071d4279SBram Moolenaarendif 10071d4279SBram Moolenaar 115dc6252dSBram Moolenaarlet s:cpo_save = &cpo 125dc6252dSBram Moolenaarset cpo&vim 135dc6252dSBram Moolenaar 14071d4279SBram Moolenaar" Misc basic 15071d4279SBram Moolenaarsyn match msidlId "[a-zA-Z][a-zA-Z0-9_]*" 16071d4279SBram Moolenaarsyn match msidlUUID "{\?[[:xdigit:]]\{8}-\([[:xdigit:]]\{4}-\)\{3}[[:xdigit:]]\{12}}\?" 17071d4279SBram Moolenaarsyn region msidlString start=/"/ skip=/\\\(\\\\\)*"/ end=/"/ 18071d4279SBram Moolenaarsyn match msidlLiteral "\d\+\(\.\d*\)\=" 19071d4279SBram Moolenaarsyn match msidlLiteral "\.\d\+" 20071d4279SBram Moolenaarsyn match msidlSpecial contained "[]\[{}:]" 21071d4279SBram Moolenaar 22071d4279SBram Moolenaar" Comments 23071d4279SBram Moolenaarsyn keyword msidlTodo contained TODO FIXME XXX 24071d4279SBram Moolenaarsyn region msidlComment start="/\*" end="\*/" contains=msidlTodo 25071d4279SBram Moolenaarsyn match msidlComment "//.*" contains=msidlTodo 26071d4279SBram Moolenaarsyn match msidlCommentError "\*/" 27071d4279SBram Moolenaar 28071d4279SBram Moolenaar" C style Preprocessor 29071d4279SBram Moolenaarsyn region msidlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+ 30071d4279SBram Moolenaarsyn match msidlIncluded contained "<[^>]*>" 31071d4279SBram Moolenaarsyn match msidlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=msidlIncluded,msidlString 32071d4279SBram Moolenaarsyn region msidlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=msidlComment,msidlCommentError 33071d4279SBram Moolenaarsyn region msidlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=msidlLiteral, msidlString 34071d4279SBram Moolenaar 35071d4279SBram Moolenaar" Attributes 36071d4279SBram Moolenaarsyn keyword msidlAttribute contained in out propget propput propputref retval 37071d4279SBram Moolenaarsyn keyword msidlAttribute contained aggregatable appobject binadable coclass control custom default defaultbind defaultcollelem defaultvalue defaultvtable dispinterface displaybind dual entry helpcontext helpfile helpstring helpstringdll hidden id immediatebind lcid library licensed nonbrowsable noncreatable nonextensible oleautomation optional object public readonly requestedit restricted source string uidefault usesgetlasterror vararg version 38071d4279SBram Moolenaarsyn match msidlAttribute /uuid(.*)/he=s+4 contains=msidlUUID 39071d4279SBram Moolenaarsyn match msidlAttribute /helpstring(.*)/he=s+10 contains=msidlString 40071d4279SBram Moolenaarsyn region msidlAttributes start="\[" end="]" keepend contains=msidlSpecial,msidlString,msidlAttribute,msidlComment,msidlCommentError 41071d4279SBram Moolenaar 42071d4279SBram Moolenaar" Keywords 43071d4279SBram Moolenaarsyn keyword msidlEnum enum 44071d4279SBram Moolenaarsyn keyword msidlImport import importlib 45071d4279SBram Moolenaarsyn keyword msidlStruct interface library coclass 46071d4279SBram Moolenaarsyn keyword msidlTypedef typedef 47071d4279SBram Moolenaar 48071d4279SBram Moolenaar" Types 49071d4279SBram Moolenaarsyn keyword msidlStandardType byte char double float hyper int long short void wchar_t 50071d4279SBram Moolenaarsyn keyword msidlStandardType BOOL BSTR HRESULT VARIANT VARIANT_BOOL 51071d4279SBram Moolenaarsyn region msidlSafeArray start="SAFEARRAY(" end=")" contains=msidlStandardType 52071d4279SBram Moolenaar 53071d4279SBram Moolenaarsyn sync lines=50 54071d4279SBram Moolenaar 55071d4279SBram Moolenaar" Define the default highlighting. 5689bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 57071d4279SBram Moolenaar 58*f37506f6SBram Moolenaarhi def link msidlInclude Include 59*f37506f6SBram Moolenaarhi def link msidlPreProc PreProc 60*f37506f6SBram Moolenaarhi def link msidlPreCondit PreCondit 61*f37506f6SBram Moolenaarhi def link msidlDefine Macro 62*f37506f6SBram Moolenaarhi def link msidlIncluded String 63*f37506f6SBram Moolenaarhi def link msidlString String 64*f37506f6SBram Moolenaarhi def link msidlComment Comment 65*f37506f6SBram Moolenaarhi def link msidlTodo Todo 66*f37506f6SBram Moolenaarhi def link msidlSpecial SpecialChar 67*f37506f6SBram Moolenaarhi def link msidlLiteral Number 68*f37506f6SBram Moolenaarhi def link msidlUUID Number 69071d4279SBram Moolenaar 70*f37506f6SBram Moolenaarhi def link msidlImport Include 71*f37506f6SBram Moolenaarhi def link msidlEnum StorageClass 72*f37506f6SBram Moolenaarhi def link msidlStruct Structure 73*f37506f6SBram Moolenaarhi def link msidlTypedef Typedef 74*f37506f6SBram Moolenaarhi def link msidlAttribute StorageClass 75071d4279SBram Moolenaar 76*f37506f6SBram Moolenaarhi def link msidlStandardType Type 77*f37506f6SBram Moolenaarhi def link msidlSafeArray Type 78071d4279SBram Moolenaar 79071d4279SBram Moolenaar 80071d4279SBram Moolenaarlet b:current_syntax = "msidl" 81071d4279SBram Moolenaar 825dc6252dSBram Moolenaarlet &cpo = s:cpo_save 835dc6252dSBram Moolenaarunlet s:cpo_save 84071d4279SBram Moolenaar" vi: set ts=8 sw=4: 85