xref: /vim-8.2.3635/runtime/syntax/msidl.vim (revision cb03397a)
1" Vim syntax file
2" Language:     MS IDL (Microsoft dialect of Interface Description Language)
3" Maintainer:   Vadim Zeitlin <[email protected]>
4" Last Change:  2012 Feb 12 by Thilo Six
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
14let s:cpo_save = &cpo
15set cpo&vim
16
17" Misc basic
18syn match   msidlId		"[a-zA-Z][a-zA-Z0-9_]*"
19syn match   msidlUUID		"{\?[[:xdigit:]]\{8}-\([[:xdigit:]]\{4}-\)\{3}[[:xdigit:]]\{12}}\?"
20syn region  msidlString		start=/"/  skip=/\\\(\\\\\)*"/	end=/"/
21syn match   msidlLiteral	"\d\+\(\.\d*\)\="
22syn match   msidlLiteral	"\.\d\+"
23syn match   msidlSpecial	contained "[]\[{}:]"
24
25" Comments
26syn keyword msidlTodo		contained TODO FIXME XXX
27syn region  msidlComment	start="/\*"  end="\*/" contains=msidlTodo
28syn match   msidlComment	"//.*" contains=msidlTodo
29syn match   msidlCommentError	"\*/"
30
31" C style Preprocessor
32syn region  msidlIncluded	contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+
33syn match   msidlIncluded	contained "<[^>]*>"
34syn match   msidlInclude	"^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=msidlIncluded,msidlString
35syn region  msidlPreCondit	start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)"  skip="\\$"	end="$" contains=msidlComment,msidlCommentError
36syn region  msidlDefine		start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=msidlLiteral, msidlString
37
38" Attributes
39syn keyword msidlAttribute      contained in out propget propput propputref retval
40syn 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
41syn match   msidlAttribute      /uuid(.*)/he=s+4 contains=msidlUUID
42syn match   msidlAttribute      /helpstring(.*)/he=s+10 contains=msidlString
43syn region  msidlAttributes     start="\[" end="]" keepend contains=msidlSpecial,msidlString,msidlAttribute,msidlComment,msidlCommentError
44
45" Keywords
46syn keyword msidlEnum		enum
47syn keyword msidlImport		import importlib
48syn keyword msidlStruct		interface library coclass
49syn keyword msidlTypedef	typedef
50
51" Types
52syn keyword msidlStandardType   byte char double float hyper int long short void wchar_t
53syn keyword msidlStandardType   BOOL BSTR HRESULT VARIANT VARIANT_BOOL
54syn region  msidlSafeArray      start="SAFEARRAY(" end=")" contains=msidlStandardType
55
56syn sync lines=50
57
58" Define the default highlighting.
59" For version 5.7 and earlier: only when not done already
60" For version 5.8 and later: only when an item doesn't have highlighting yet
61if version >= 508 || !exists("did_msidl_syntax_inits")
62  if version < 508
63    let did_msidl_syntax_inits = 1
64    command -nargs=+ HiLink hi link <args>
65  else
66    command -nargs=+ HiLink hi def link <args>
67  endif
68
69  HiLink msidlInclude		Include
70  HiLink msidlPreProc		PreProc
71  HiLink msidlPreCondit		PreCondit
72  HiLink msidlDefine		Macro
73  HiLink msidlIncluded		String
74  HiLink msidlString		String
75  HiLink msidlComment		Comment
76  HiLink msidlTodo		Todo
77  HiLink msidlSpecial		SpecialChar
78  HiLink msidlLiteral		Number
79  HiLink msidlUUID		Number
80
81  HiLink msidlImport		Include
82  HiLink msidlEnum		StorageClass
83  HiLink msidlStruct		Structure
84  HiLink msidlTypedef		Typedef
85  HiLink msidlAttribute		StorageClass
86
87  HiLink msidlStandardType	Type
88  HiLink msidlSafeArray		Type
89
90  delcommand HiLink
91endif
92
93let b:current_syntax = "msidl"
94
95let &cpo = s:cpo_save
96unlet s:cpo_save
97" vi: set ts=8 sw=4:
98