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