xref: /vim-8.2.3635/runtime/syntax/uc.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	UnrealScript
3071d4279SBram Moolenaar" Maintainer:	Mark Ferrell <[email protected]>
4071d4279SBram Moolenaar" URL:		ftp://ftp.chaoticdreams.org/pub/ut/vim/uc.vim
5071d4279SBram Moolenaar" Credits:	Based on the java.vim syntax file by Claudio Fleiner
6071d4279SBram Moolenaar" Last change:	2003 May 31
7071d4279SBram Moolenaar
8071d4279SBram Moolenaar" Please check :help uc.vim for comments on some of the options available.
9071d4279SBram Moolenaar
1089bcfda6SBram Moolenaar" quit when a syntax file was already loaded
1189bcfda6SBram Moolenaarif exists("b:current_syntax")
12071d4279SBram Moolenaar  finish
13071d4279SBram Moolenaarendif
14071d4279SBram Moolenaar
15071d4279SBram Moolenaar" some characters that cannot be in a UnrealScript program (outside a string)
16071d4279SBram Moolenaarsyn match ucError "[\\@`]"
17071d4279SBram Moolenaarsyn match ucError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
18071d4279SBram Moolenaar
19071d4279SBram Moolenaar" we define it here so that included files can test for it
20071d4279SBram Moolenaarif !exists("main_syntax")
21071d4279SBram Moolenaar  let main_syntax='uc'
22071d4279SBram Moolenaarendif
23071d4279SBram Moolenaar
24071d4279SBram Moolenaarsyntax case ignore
25071d4279SBram Moolenaar
26071d4279SBram Moolenaar" keyword definitions
27071d4279SBram Moolenaarsyn keyword ucBranch	      break continue
28071d4279SBram Moolenaarsyn keyword ucConditional     if else switch
29071d4279SBram Moolenaarsyn keyword ucRepeat	      while for do foreach
30071d4279SBram Moolenaarsyn keyword ucBoolean	      true false
31071d4279SBram Moolenaarsyn keyword ucConstant	      null
32071d4279SBram Moolenaarsyn keyword ucOperator	      new instanceof
33071d4279SBram Moolenaarsyn keyword ucType	      boolean char byte short int long float double
34071d4279SBram Moolenaarsyn keyword ucType	      void Pawn sound state auto exec function ipaddr
35071d4279SBram Moolenaarsyn keyword ucType	      ELightType actor ammo defaultproperties bool
36071d4279SBram Moolenaarsyn keyword ucType	      native noexport var out vector name local string
37071d4279SBram Moolenaarsyn keyword ucType	      event
38071d4279SBram Moolenaarsyn keyword ucStatement       return
39071d4279SBram Moolenaarsyn keyword ucStorageClass    static synchronized transient volatile final
40071d4279SBram Moolenaarsyn keyword ucMethodDecl      synchronized throws
41071d4279SBram Moolenaar
42071d4279SBram Moolenaar" UnrealScript defines classes in sorta fscked up fashion
43071d4279SBram Moolenaarsyn match   ucClassDecl       "^[Cc]lass[\s$]*\S*[\s$]*expands[\s$]*\S*;" contains=ucSpecial,ucSpecialChar,ucClassKeys
44071d4279SBram Moolenaarsyn keyword ucClassKeys	      class expands extends
45071d4279SBram Moolenaarsyn match   ucExternal	      "^\#exec.*" contains=ucCommentString,ucNumber
46071d4279SBram Moolenaarsyn keyword ucScopeDecl       public protected private abstract
47071d4279SBram Moolenaar
48071d4279SBram Moolenaar" UnrealScript Functions
49071d4279SBram Moolenaarsyn match   ucFuncDef	      "^.*function\s*[\(]*" contains=ucType,ucStorageClass
50071d4279SBram Moolenaarsyn match   ucEventDef	      "^.*event\s*[\(]*" contains=ucType,ucStorageClass
51071d4279SBram Moolenaarsyn match   ucClassLabel      "[a-zA-Z0-9]*\'[a-zA-Z0-9]*\'" contains=ucCharacter
52071d4279SBram Moolenaar
53071d4279SBram Moolenaarsyn region  ucLabelRegion     transparent matchgroup=ucLabel start="\<case\>" matchgroup=NONE end=":" contains=ucNumber
54071d4279SBram Moolenaarsyn match   ucUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=ucLabel
55071d4279SBram Moolenaarsyn keyword ucLabel	      default
56071d4279SBram Moolenaar
57071d4279SBram Moolenaar" The following cluster contains all java groups except the contained ones
58071d4279SBram Moolenaarsyn 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
59071d4279SBram Moolenaar
60071d4279SBram Moolenaar" Comments
61071d4279SBram Moolenaarsyn keyword ucTodo	       contained TODO FIXME XXX
62071d4279SBram Moolenaarsyn region  ucCommentString    contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=ucSpecial,ucCommentStar,ucSpecialChar
63071d4279SBram Moolenaarsyn region  ucComment2String   contained start=+"+  end=+$\|"+  contains=ucSpecial,ucSpecialChar
64071d4279SBram Moolenaarsyn match   ucCommentCharacter contained "'\\[^']\{1,6\}'" contains=ucSpecialChar
65071d4279SBram Moolenaarsyn match   ucCommentCharacter contained "'\\''" contains=ucSpecialChar
66071d4279SBram Moolenaarsyn match   ucCommentCharacter contained "'[^\\]'"
67071d4279SBram Moolenaarsyn region  ucComment	       start="/\*"  end="\*/" contains=ucCommentString,ucCommentCharacter,ucNumber,ucTodo
68071d4279SBram Moolenaarsyn match   ucCommentStar      contained "^\s*\*[^/]"me=e-1
69071d4279SBram Moolenaarsyn match   ucCommentStar      contained "^\s*\*$"
70071d4279SBram Moolenaarsyn match   ucLineComment      "//.*" contains=ucComment2String,ucCommentCharacter,ucNumber,ucTodo
71071d4279SBram Moolenaarhi link ucCommentString ucString
72071d4279SBram Moolenaarhi link ucComment2String ucString
73071d4279SBram Moolenaarhi link ucCommentCharacter ucCharacter
74071d4279SBram Moolenaar
75071d4279SBram Moolenaarsyn cluster ucTop add=ucComment,ucLineComment
76071d4279SBram Moolenaar
77071d4279SBram Moolenaar" match the special comment /**/
78071d4279SBram Moolenaarsyn match   ucComment	       "/\*\*/"
79071d4279SBram Moolenaar
80071d4279SBram Moolenaar" Strings and constants
81071d4279SBram Moolenaarsyn match   ucSpecialError     contained "\\."
82071d4279SBram Moolenaar"syn match   ucSpecialCharError contained "[^']"
83071d4279SBram Moolenaarsyn match   ucSpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
84071d4279SBram Moolenaarsyn region  ucString	       start=+"+ end=+"+  contains=ucSpecialChar,ucSpecialError
85071d4279SBram Moolenaarsyn match   ucStringError      +"\([^"\\]\|\\.\)*$+
86071d4279SBram Moolenaarsyn match   ucCharacter        "'[^']*'" contains=ucSpecialChar,ucSpecialCharError
87071d4279SBram Moolenaarsyn match   ucCharacter        "'\\''" contains=ucSpecialChar
88071d4279SBram Moolenaarsyn match   ucCharacter        "'[^\\]'"
89071d4279SBram Moolenaarsyn match   ucNumber	       "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
90071d4279SBram Moolenaarsyn match   ucNumber	       "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
91071d4279SBram Moolenaarsyn match   ucNumber	       "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
92071d4279SBram Moolenaarsyn match   ucNumber	       "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
93071d4279SBram Moolenaar
94071d4279SBram Moolenaar" unicode characters
95071d4279SBram Moolenaarsyn match   ucSpecial "\\u\d\{4\}"
96071d4279SBram Moolenaar
97071d4279SBram Moolenaarsyn cluster ucTop add=ucString,ucCharacter,ucNumber,ucSpecial,ucStringError
98071d4279SBram Moolenaar
99071d4279SBram Moolenaar" catch errors caused by wrong parenthesis
100071d4279SBram Moolenaarsyn region  ucParen	       transparent start="(" end=")" contains=@ucTop,ucParen
101071d4279SBram Moolenaarsyn match   ucParenError       ")"
102071d4279SBram Moolenaarhi link     ucParenError       ucError
103071d4279SBram Moolenaar
104071d4279SBram Moolenaarif !exists("uc_minlines")
105071d4279SBram Moolenaar  let uc_minlines = 10
106071d4279SBram Moolenaarendif
107071d4279SBram Moolenaarexec "syn sync ccomment ucComment minlines=" . uc_minlines
108071d4279SBram Moolenaar
109071d4279SBram Moolenaar" Define the default highlighting.
11089bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
111071d4279SBram Moolenaar
112*f37506f6SBram Moolenaarhi def link ucFuncDef			Conditional
113*f37506f6SBram Moolenaarhi def link ucEventDef			Conditional
114*f37506f6SBram Moolenaarhi def link ucBraces			Function
115*f37506f6SBram Moolenaarhi def link ucBranch			Conditional
116*f37506f6SBram Moolenaarhi def link ucLabel			Label
117*f37506f6SBram Moolenaarhi def link ucUserLabel			Label
118*f37506f6SBram Moolenaarhi def link ucConditional			Conditional
119*f37506f6SBram Moolenaarhi def link ucRepeat			Repeat
120*f37506f6SBram Moolenaarhi def link ucStorageClass			StorageClass
121*f37506f6SBram Moolenaarhi def link ucMethodDecl			ucStorageClass
122*f37506f6SBram Moolenaarhi def link ucClassDecl			ucStorageClass
123*f37506f6SBram Moolenaarhi def link ucScopeDecl			ucStorageClass
124*f37506f6SBram Moolenaarhi def link ucBoolean			Boolean
125*f37506f6SBram Moolenaarhi def link ucSpecial			Special
126*f37506f6SBram Moolenaarhi def link ucSpecialError			Error
127*f37506f6SBram Moolenaarhi def link ucSpecialCharError		Error
128*f37506f6SBram Moolenaarhi def link ucString			String
129*f37506f6SBram Moolenaarhi def link ucCharacter			Character
130*f37506f6SBram Moolenaarhi def link ucSpecialChar			SpecialChar
131*f37506f6SBram Moolenaarhi def link ucNumber			Number
132*f37506f6SBram Moolenaarhi def link ucError			Error
133*f37506f6SBram Moolenaarhi def link ucStringError			Error
134*f37506f6SBram Moolenaarhi def link ucStatement			Statement
135*f37506f6SBram Moolenaarhi def link ucOperator			Operator
136*f37506f6SBram Moolenaarhi def link ucOverLoaded			Operator
137*f37506f6SBram Moolenaarhi def link ucComment			Comment
138*f37506f6SBram Moolenaarhi def link ucDocComment			Comment
139*f37506f6SBram Moolenaarhi def link ucLineComment			Comment
140*f37506f6SBram Moolenaarhi def link ucConstant			ucBoolean
141*f37506f6SBram Moolenaarhi def link ucTypedef			Typedef
142*f37506f6SBram Moolenaarhi def link ucTodo				Todo
143071d4279SBram Moolenaar
144*f37506f6SBram Moolenaarhi def link ucCommentTitle			SpecialComment
145*f37506f6SBram Moolenaarhi def link ucDocTags			Special
146*f37506f6SBram Moolenaarhi def link ucDocParam			Function
147*f37506f6SBram Moolenaarhi def link ucCommentStar			ucComment
148071d4279SBram Moolenaar
149*f37506f6SBram Moolenaarhi def link ucType				Type
150*f37506f6SBram Moolenaarhi def link ucExternal			Include
151071d4279SBram Moolenaar
152*f37506f6SBram Moolenaarhi def link ucClassKeys			Conditional
153*f37506f6SBram Moolenaarhi def link ucClassLabel			Conditional
154071d4279SBram Moolenaar
155*f37506f6SBram Moolenaarhi def link htmlComment			Special
156*f37506f6SBram Moolenaarhi def link htmlCommentPart		Special
157071d4279SBram Moolenaar
158071d4279SBram Moolenaar
159071d4279SBram Moolenaarlet b:current_syntax = "uc"
160071d4279SBram Moolenaar
161071d4279SBram Moolenaarif main_syntax == 'uc'
162071d4279SBram Moolenaar  unlet main_syntax
163071d4279SBram Moolenaarendif
164071d4279SBram Moolenaar
165071d4279SBram Moolenaar" vim: ts=8
166