| " Vim syntax file |
| " Language: UnrealScript |
| " Maintainer: Mark Ferrell <major@chaoticdreams.org> |
| " URL: ftp://ftp.chaoticdreams.org/pub/ut/vim/uc.vim |
| " Credits: Based on the java.vim syntax file by Claudio Fleiner |
| " Last change: 2003 May 31 |
| |
| " Please check :help uc.vim for comments on some of the options available. |
| |
| " For version 5.x: Clear all syntax items |
| " For version 6.x: Quit when a syntax file was already loaded |
| if version < 600 |
| syntax clear |
| elseif exists("b:current_syntax") |
| finish |
| endif |
| |
| " some characters that cannot be in a UnrealScript program (outside a string) |
| syn match ucError "[\\@`]" |
| syn match ucError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/" |
| |
| " we define it here so that included files can test for it |
| if !exists("main_syntax") |
| let main_syntax='uc' |
| endif |
| |
| syntax case ignore |
| |
| " keyword definitions |
| syn keyword ucBranch break continue |
| syn keyword ucConditional if else switch |
| syn keyword ucRepeat while for do foreach |
| syn keyword ucBoolean true false |
| syn keyword ucConstant null |
| syn keyword ucOperator new instanceof |
| syn keyword ucType boolean char byte short int long float double |
| syn keyword ucType void Pawn sound state auto exec function ipaddr |
| syn keyword ucType ELightType actor ammo defaultproperties bool |
| syn keyword ucType native noexport var out vector name local string |
| syn keyword ucType event |
| syn keyword ucStatement return |
| syn keyword ucStorageClass static synchronized transient volatile final |
| syn keyword ucMethodDecl synchronized throws |
| |
| " UnrealScript defines classes in sorta fscked up fashion |
| syn match ucClassDecl "^[Cc]lass[\s$]*\S*[\s$]*expands[\s$]*\S*;" contains=ucSpecial,ucSpecialChar,ucClassKeys |
| syn keyword ucClassKeys class expands extends |
| syn match ucExternal "^\#exec.*" contains=ucCommentString,ucNumber |
| syn keyword ucScopeDecl public protected private abstract |
| |
| " UnrealScript Functions |
| syn match ucFuncDef "^.*function\s*[\(]*" contains=ucType,ucStorageClass |
| syn match ucEventDef "^.*event\s*[\(]*" contains=ucType,ucStorageClass |
| syn match ucClassLabel "[a-zA-Z0-9]*\'[a-zA-Z0-9]*\'" contains=ucCharacter |
| |
| syn region ucLabelRegion transparent matchgroup=ucLabel start="\<case\>" matchgroup=NONE end=":" contains=ucNumber |
| syn match ucUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=ucLabel |
| syn keyword ucLabel default |
| |
| " The following cluster contains all java groups except the contained ones |
| syn 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 |
| |
| " Comments |
| syn keyword ucTodo contained TODO FIXME XXX |
| syn region ucCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=ucSpecial,ucCommentStar,ucSpecialChar |
| syn region ucComment2String contained start=+"+ end=+$\|"+ contains=ucSpecial,ucSpecialChar |
| syn match ucCommentCharacter contained "'\\[^']\{1,6\}'" contains=ucSpecialChar |
| syn match ucCommentCharacter contained "'\\''" contains=ucSpecialChar |
| syn match ucCommentCharacter contained "'[^\\]'" |
| syn region ucComment start="/\*" end="\*/" contains=ucCommentString,ucCommentCharacter,ucNumber,ucTodo |
| syn match ucCommentStar contained "^\s*\*[^/]"me=e-1 |
| syn match ucCommentStar contained "^\s*\*$" |
| syn match ucLineComment "//.*" contains=ucComment2String,ucCommentCharacter,ucNumber,ucTodo |
| hi link ucCommentString ucString |
| hi link ucComment2String ucString |
| hi link ucCommentCharacter ucCharacter |
| |
| syn cluster ucTop add=ucComment,ucLineComment |
| |
| " match the special comment /**/ |
| syn match ucComment "/\*\*/" |
| |
| " Strings and constants |
| syn match ucSpecialError contained "\\." |
| "syn match ucSpecialCharError contained "[^']" |
| syn match ucSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" |
| syn region ucString start=+"+ end=+"+ contains=ucSpecialChar,ucSpecialError |
| syn match ucStringError +"\([^"\\]\|\\.\)*$+ |
| syn match ucCharacter "'[^']*'" contains=ucSpecialChar,ucSpecialCharError |
| syn match ucCharacter "'\\''" contains=ucSpecialChar |
| syn match ucCharacter "'[^\\]'" |
| syn match ucNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" |
| syn match ucNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" |
| syn match ucNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" |
| syn match ucNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" |
| |
| " unicode characters |
| syn match ucSpecial "\\u\d\{4\}" |
| |
| syn cluster ucTop add=ucString,ucCharacter,ucNumber,ucSpecial,ucStringError |
| |
| " catch errors caused by wrong parenthesis |
| syn region ucParen transparent start="(" end=")" contains=@ucTop,ucParen |
| syn match ucParenError ")" |
| hi link ucParenError ucError |
| |
| if !exists("uc_minlines") |
| let uc_minlines = 10 |
| endif |
| exec "syn sync ccomment ucComment minlines=" . uc_minlines |
| |
| " Define the default highlighting. |
| " For version 5.7 and earlier: only when not done already |
| " For version 5.8 and later: only when an item doesn't have highlighting yet |
| if version >= 508 || !exists("did_uc_syntax_inits") |
| if version < 508 |
| let did_uc_syntax_inits = 1 |
| command -nargs=+ HiLink hi link <args> |
| else |
| command -nargs=+ HiLink hi def link <args> |
| endif |
| |
| HiLink ucFuncDef Conditional |
| HiLink ucEventDef Conditional |
| HiLink ucBraces Function |
| HiLink ucBranch Conditional |
| HiLink ucLabel Label |
| HiLink ucUserLabel Label |
| HiLink ucConditional Conditional |
| HiLink ucRepeat Repeat |
| HiLink ucStorageClass StorageClass |
| HiLink ucMethodDecl ucStorageClass |
| HiLink ucClassDecl ucStorageClass |
| HiLink ucScopeDecl ucStorageClass |
| HiLink ucBoolean Boolean |
| HiLink ucSpecial Special |
| HiLink ucSpecialError Error |
| HiLink ucSpecialCharError Error |
| HiLink ucString String |
| HiLink ucCharacter Character |
| HiLink ucSpecialChar SpecialChar |
| HiLink ucNumber Number |
| HiLink ucError Error |
| HiLink ucStringError Error |
| HiLink ucStatement Statement |
| HiLink ucOperator Operator |
| HiLink ucOverLoaded Operator |
| HiLink ucComment Comment |
| HiLink ucDocComment Comment |
| HiLink ucLineComment Comment |
| HiLink ucConstant ucBoolean |
| HiLink ucTypedef Typedef |
| HiLink ucTodo Todo |
| |
| HiLink ucCommentTitle SpecialComment |
| HiLink ucDocTags Special |
| HiLink ucDocParam Function |
| HiLink ucCommentStar ucComment |
| |
| HiLink ucType Type |
| HiLink ucExternal Include |
| |
| HiLink ucClassKeys Conditional |
| HiLink ucClassLabel Conditional |
| |
| HiLink htmlComment Special |
| HiLink htmlCommentPart Special |
| |
| delcommand HiLink |
| endif |
| |
| let b:current_syntax = "uc" |
| |
| if main_syntax == 'uc' |
| unlet main_syntax |
| endif |
| |
| " vim: ts=8 |