blob: e128cbf82c8b2391664855a1e9d06c96f9cca8d2 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: UnrealScript
3" Maintainer: Mark Ferrell <major@chaoticdreams.org>
4" URL: ftp://ftp.chaoticdreams.org/pub/ut/vim/uc.vim
5" Credits: Based on the java.vim syntax file by Claudio Fleiner
6" Last change: 2003 May 31
7
8" Please check :help uc.vim for comments on some of the options available.
9
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020010" quit when a syntax file was already loaded
11if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000012 finish
13endif
14
15" some characters that cannot be in a UnrealScript program (outside a string)
16syn match ucError "[\\@`]"
17syn match ucError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
18
19" we define it here so that included files can test for it
20if !exists("main_syntax")
21 let main_syntax='uc'
22endif
23
24syntax case ignore
25
26" keyword definitions
27syn keyword ucBranch break continue
28syn keyword ucConditional if else switch
29syn keyword ucRepeat while for do foreach
30syn keyword ucBoolean true false
31syn keyword ucConstant null
32syn keyword ucOperator new instanceof
33syn keyword ucType boolean char byte short int long float double
34syn keyword ucType void Pawn sound state auto exec function ipaddr
35syn keyword ucType ELightType actor ammo defaultproperties bool
36syn keyword ucType native noexport var out vector name local string
37syn keyword ucType event
38syn keyword ucStatement return
39syn keyword ucStorageClass static synchronized transient volatile final
40syn keyword ucMethodDecl synchronized throws
41
42" UnrealScript defines classes in sorta fscked up fashion
43syn match ucClassDecl "^[Cc]lass[\s$]*\S*[\s$]*expands[\s$]*\S*;" contains=ucSpecial,ucSpecialChar,ucClassKeys
44syn keyword ucClassKeys class expands extends
45syn match ucExternal "^\#exec.*" contains=ucCommentString,ucNumber
46syn keyword ucScopeDecl public protected private abstract
47
48" UnrealScript Functions
49syn match ucFuncDef "^.*function\s*[\(]*" contains=ucType,ucStorageClass
50syn match ucEventDef "^.*event\s*[\(]*" contains=ucType,ucStorageClass
51syn match ucClassLabel "[a-zA-Z0-9]*\'[a-zA-Z0-9]*\'" contains=ucCharacter
52
53syn region ucLabelRegion transparent matchgroup=ucLabel start="\<case\>" matchgroup=NONE end=":" contains=ucNumber
54syn match ucUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=ucLabel
55syn keyword ucLabel default
56
57" The following cluster contains all java groups except the contained ones
58syn cluster ucTop contains=ucExternal,ucError,ucError,ucBranch,ucLabelRegion,ucLabel,ucConditional,ucRepeat,ucBoolean,ucConstant,ucTypedef,ucOperator,ucType,ucType,ucStatement,ucStorageClass,ucMethodDecl,ucClassDecl,ucClassDecl,ucClassDecl,ucScopeDecl,ucError,ucError2,ucUserLabel,ucClassLabel
59
60" Comments
61syn keyword ucTodo contained TODO FIXME XXX
62syn region ucCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=ucSpecial,ucCommentStar,ucSpecialChar
63syn region ucComment2String contained start=+"+ end=+$\|"+ contains=ucSpecial,ucSpecialChar
64syn match ucCommentCharacter contained "'\\[^']\{1,6\}'" contains=ucSpecialChar
65syn match ucCommentCharacter contained "'\\''" contains=ucSpecialChar
66syn match ucCommentCharacter contained "'[^\\]'"
67syn region ucComment start="/\*" end="\*/" contains=ucCommentString,ucCommentCharacter,ucNumber,ucTodo
68syn match ucCommentStar contained "^\s*\*[^/]"me=e-1
69syn match ucCommentStar contained "^\s*\*$"
70syn match ucLineComment "//.*" contains=ucComment2String,ucCommentCharacter,ucNumber,ucTodo
71hi link ucCommentString ucString
72hi link ucComment2String ucString
73hi link ucCommentCharacter ucCharacter
74
75syn cluster ucTop add=ucComment,ucLineComment
76
77" match the special comment /**/
78syn match ucComment "/\*\*/"
79
80" Strings and constants
81syn match ucSpecialError contained "\\."
82"syn match ucSpecialCharError contained "[^']"
83syn match ucSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
84syn region ucString start=+"+ end=+"+ contains=ucSpecialChar,ucSpecialError
85syn match ucStringError +"\([^"\\]\|\\.\)*$+
86syn match ucCharacter "'[^']*'" contains=ucSpecialChar,ucSpecialCharError
87syn match ucCharacter "'\\''" contains=ucSpecialChar
88syn match ucCharacter "'[^\\]'"
89syn match ucNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
90syn match ucNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
91syn match ucNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
92syn match ucNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
93
94" unicode characters
95syn match ucSpecial "\\u\d\{4\}"
96
97syn cluster ucTop add=ucString,ucCharacter,ucNumber,ucSpecial,ucStringError
98
99" catch errors caused by wrong parenthesis
100syn region ucParen transparent start="(" end=")" contains=@ucTop,ucParen
101syn match ucParenError ")"
102hi link ucParenError ucError
103
104if !exists("uc_minlines")
105 let uc_minlines = 10
106endif
107exec "syn sync ccomment ucComment minlines=" . uc_minlines
108
109" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200110" Only when an item doesn't have highlighting yet
111command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000112
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200113HiLink ucFuncDef Conditional
114HiLink ucEventDef Conditional
115HiLink ucBraces Function
116HiLink ucBranch Conditional
117HiLink ucLabel Label
118HiLink ucUserLabel Label
119HiLink ucConditional Conditional
120HiLink ucRepeat Repeat
121HiLink ucStorageClass StorageClass
122HiLink ucMethodDecl ucStorageClass
123HiLink ucClassDecl ucStorageClass
124HiLink ucScopeDecl ucStorageClass
125HiLink ucBoolean Boolean
126HiLink ucSpecial Special
127HiLink ucSpecialError Error
128HiLink ucSpecialCharError Error
129HiLink ucString String
130HiLink ucCharacter Character
131HiLink ucSpecialChar SpecialChar
132HiLink ucNumber Number
133HiLink ucError Error
134HiLink ucStringError Error
135HiLink ucStatement Statement
136HiLink ucOperator Operator
137HiLink ucOverLoaded Operator
138HiLink ucComment Comment
139HiLink ucDocComment Comment
140HiLink ucLineComment Comment
141HiLink ucConstant ucBoolean
142HiLink ucTypedef Typedef
143HiLink ucTodo Todo
Bram Moolenaar071d4272004-06-13 20:20:40 +0000144
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200145HiLink ucCommentTitle SpecialComment
146HiLink ucDocTags Special
147HiLink ucDocParam Function
148HiLink ucCommentStar ucComment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000149
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200150HiLink ucType Type
151HiLink ucExternal Include
Bram Moolenaar071d4272004-06-13 20:20:40 +0000152
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200153HiLink ucClassKeys Conditional
154HiLink ucClassLabel Conditional
Bram Moolenaar071d4272004-06-13 20:20:40 +0000155
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200156HiLink htmlComment Special
157HiLink htmlCommentPart Special
Bram Moolenaar071d4272004-06-13 20:20:40 +0000158
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200159delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +0000160
161let b:current_syntax = "uc"
162
163if main_syntax == 'uc'
164 unlet main_syntax
165endif
166
167" vim: ts=8