haxe.vim (11756B)
1 " Vim syntax file 2 " Language: haxe 3 4 " Please check :help haxe.vim for comments on some of the options available. 5 6 "set errorformat=%f\:%l\:\ characters\ %c-%*[^\ ]\ %m,%f\:%l\:\ %m 7 set errorformat=%f\:%l\:\ characters\ %c-%*[^\ ]\ %m,%f\:%l\:\ %m 8 9 " Quit when a syntax file was already loaded 10 if !exists("main_syntax") 11 if version < 600 12 syntax clear 13 elseif exists("b:current_syntax") 14 finish 15 endif 16 " we define it here so that included files can test for it 17 let main_syntax='haxe' 18 endif 19 20 " don't use standard HiLink, it will not work with included syntax files 21 if version < 508 22 command! -nargs=+ HaxeHiLink hi link <args> 23 else 24 command! -nargs=+ HaxeHiLink hi def link <args> 25 endif 26 27 " some characters that cannot be in a haxe program (outside a string) 28 syn match haxeError "[\\@`]" 29 syn match haxeError "<<<\|=>\|<>\|||=\|&&=\|\*\/" 30 31 " use separate name so that it can be deleted in haxecc.vim 32 syn match haxeError2 "#\|=<" 33 HaxeHiLink haxeError2 haxeError 34 35 36 " keyword definitions 37 syn keyword haxeExternal import extern package 38 syn keyword haxeConditional if else switch 39 syn keyword haxeRepeat while for do in 40 syn keyword haxeBoolean true false 41 syn keyword haxeConstant null 42 syn keyword haxeTypedef this super 43 syn keyword haxeOperator new cast 44 syn keyword haxeType Void Bool Int Float Dynamic 45 syn keyword haxeStatement return 46 syn keyword haxeStorageClass var final typedef enum 47 syn keyword haxeFunction function 48 " syn keyword haxeStatic 49 syn keyword haxeExceptions throw try catch finally untyped 50 syn keyword haxeAssert assert 51 syn keyword haxeMethodDecl synchronized throws 52 syn keyword haxeClassDecl extends implements interface 53 syn match haxeOperator "\.\.\." 54 " to differentiate the keyword class from MyClass.class we use a match here 55 syn match haxeTypedef "\.\s*\<class\>"ms=s+1 56 syn match haxeClassDecl "^class\>" 57 syn match haxeClassDecl "[^.]\s*\<class\>"ms=s+1 58 syn keyword haxeBranch break continue nextgroup=haxeUserLabelRef skipwhite 59 syn match haxeUserLabelRef "\k\+" contained 60 syn keyword haxeScopeDecl static public protected private abstract override 61 62 " haxe.lang.* 63 syn match haxeLangClass "\<System\>" 64 syn keyword haxeLangClass Array BasicType Class Date DateTools EReg Hash IntHash IntIter Iterator Lambda List Math Md5 Reflect Std String StringBuf StringTools Xml XmlType 65 HaxeHiLink haxeLangObject haxeConstant 66 syn cluster haxeTop add=haxeLangObject,haxeLangClass 67 syn cluster haxeClasses add=haxeLangClass 68 69 if filereadable(expand("<sfile>:p:h")."/haxeid.vim") 70 source <sfile>:p:h/haxeid.vim 71 endif 72 73 if exists("haxe_space_errors") 74 if !exists("haxe_no_trail_space_error") 75 syn match haxeSpaceError "\s\+$" 76 endif 77 if !exists("haxe_no_tab_space_error") 78 syn match haxeSpaceError " \+\t"me=e-1 79 endif 80 endif 81 82 syn region haxeLabelRegion transparent matchgroup=haxeLabel start="\<case\>" matchgroup=NONE end=":" contains=haxeNumber,haxeCharacter 83 syn match haxeUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=haxeLabel 84 syn keyword haxeLabel default 85 86 " The following cluster contains all haxe groups except the contained ones 87 syn cluster haxeTop add=haxeExternal,haxeError,haxeError,haxeBranch,haxeLabelRegion,haxeLabel,haxeConditional,haxeRepeat,haxeBoolean,haxeConstant,haxeTypedef,haxeOperator,haxeType,haxeType,haxeStatement,haxeStorageClass,haxeAssert,haxeExceptions,haxeMethodDecl,haxeClassDecl,haxeClassDecl,haxeClassDecl,haxeScopeDecl,haxeError,haxeError2,haxeUserLabel,haxeLangObject 88 89 90 " Comments 91 syn keyword haxeTodo contained TODO FIXME XXX 92 if exists("haxe_comment_strings") 93 syn region haxeCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=haxeSpecial,haxeCommentStar,haxeSpecialChar,@Spell 94 syn region haxeComment2String contained start=+"+ end=+$\|"+ contains=haxeSpecial,haxeSpecialChar,@Spell 95 syn match haxeCommentCharacter contained "'\\[^']\{1,6\}'" contains=haxeSpecialChar 96 syn match haxeCommentCharacter contained "'\\''" contains=haxeSpecialChar 97 syn match haxeCommentCharacter contained "'[^\\]'" 98 syn cluster haxeCommentSpecial add=haxeCommentString,haxeCommentCharacter,haxeNumber 99 syn cluster haxeCommentSpecial2 add=haxeComment2String,haxeCommentCharacter,haxeNumber 100 endif 101 syn region haxeComment start="/\*" end="\*/" contains=@haxeCommentSpecial,haxeTodo,@Spell 102 syn match haxeCommentStar contained "^\s*\*[^/]"me=e-1 103 syn match haxeCommentStar contained "^\s*\*$" 104 syn match haxeLineComment "//.*" contains=@haxeCommentSpecial2,haxeTodo,@Spell 105 HaxeHiLink haxeCommentString haxeString 106 HaxeHiLink haxeComment2String haxeString 107 HaxeHiLink haxeCommentCharacter haxeCharacter 108 109 syn cluster haxeTop add=haxeComment,haxeLineComment 110 111 if exists("haxe_haxedoc") || main_syntax == 'jsp' 112 syntax case ignore 113 " syntax coloring for haxedoc comments (HTML) 114 " syntax include @haxeHtml <sfile>:p:h/html.vim 115 " unlet b:current_syntax 116 syn region haxeDocComment start="/\*\*" end="\*/" keepend contains=haxeCommentTitle,@haxeHtml,haxeDocTags,haxeTodo,@Spell 117 syn region haxeCommentTitle contained matchgroup=haxeDocComment start="/\*\*" matchgroup=haxeCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@haxeHtml,haxeCommentStar,haxeTodo,@Spell,haxeDocTags 118 119 syn region haxeDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" 120 syn match haxeDocTags contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=haxeDocParam 121 syn match haxeDocParam contained "\s\S\+" 122 syn match haxeDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>" 123 syntax case match 124 endif 125 126 " match the special comment /**/ 127 syn match haxeComment "/\*\*/" 128 129 " Strings and constants 130 syn match haxeSpecialError contained "\\." 131 syn match haxeSpecialCharError contained "[^']" 132 syn match haxeSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" 133 syn match haxeEregEscape contained "\(\\\\\|\\/\)" 134 syn region haxeEreg start=+\~\/+ end=+\/[gims]*+ contains=haxeEregEscape 135 136 syn region haxeString start=+"+ end=+"+ contains=haxeSpecialChar,haxeSpecialError,@Spell 137 syn region haxeSingleString start=+'+ end=+'+ 138 " next line disabled, it can cause a crash for a long line 139 "syn match haxeStringError +"\([^"\\]\|\\.\)*$+ 140 syn match haxeCharacter "'[^']*'" contains=haxeSpecialChar,haxeSpecialCharError 141 syn match haxeCharacter "'\\''" contains=haxeSpecialChar 142 syn match haxeCharacter "'[^\\]'" 143 syn match haxeNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" 144 "syn match haxeNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" 145 syn match haxeNumber "\(\<\d\+\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" 146 syn match haxeNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" 147 syn match haxeNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" 148 149 150 syn region haxeCondIf start="#if \+!\?" end="\W" skip="([A-Za-z0-9_ |&!]\+)" 151 syn region haxeCondElse start="#else \+!\?" end="\W" skip="([A-Za-z0-9_ |&!]\+)" 152 syn match haxeCondEnd "#end" 153 syn match haxeCondError "#else *$" 154 155 " unicode characters 156 syn match haxeSpecial "\\u\d\{4\}" 157 158 syn cluster haxeTop add=haxeString,haxeCharacter,haxeNumber,haxeSpecial,haxeStringError 159 160 if exists("haxe_highlight_functions") 161 if haxe_highlight_functions == "indent" 162 syn match haxeFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=haxeType,haxeStorageClass,@haxeClasses 163 syn region haxeFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=haxeType,haxeStorageClass,@haxeClasses 164 syn match haxeFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=haxeType,haxeStorageClass,@haxeClasses 165 syn region haxeFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=haxeType,haxeStorageClass,@haxeClasses 166 else 167 " This line catches method declarations at any indentation>0, but it assumes 168 " two things: 169 " 1. class names are always capitalized (ie: Button) 170 " 2. method names are never capitalized (except constructors, of course) 171 syn region haxeFuncDef start=+\s\+\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*(+ end=+)+ contains=haxeType,haxeStorageClass,haxeComment,haxeLineComment,@haxeClasses 172 endif 173 syn match haxeBraces "[{}]" 174 syn cluster haxeTop add=haxeFuncDef,haxeBraces 175 endif 176 177 if exists("haxe_mark_braces_in_parens_as_errors") 178 syn match haxeInParen contained "[{}]" 179 HaxeHiLink haxeInParen haxeError 180 syn cluster haxeTop add=haxeInParen 181 endif 182 183 " catch errors caused by wrong parenthesis 184 syn region haxeParenT transparent matchgroup=haxeParen start="(" end=")" contains=@haxeTop,haxeParenT1 185 syn region haxeParenT1 transparent matchgroup=haxeParen1 start="(" end=")" contains=@haxeTop,haxeParenT2 contained 186 syn region haxeParenT2 transparent matchgroup=haxeParen2 start="(" end=")" contains=@haxeTop,haxeParenT contained 187 syn match haxeParenError ")" 188 HaxeHiLink haxeParenError haxeError 189 190 if !exists("haxe_minlines") 191 let haxe_minlines = 10 192 endif 193 exec "syn sync ccomment haxeComment minlines=" . haxe_minlines 194 195 " The default highlighting. 196 if version >= 508 || !exists("did_haxe_syn_inits") 197 if version < 508 198 let did_haxe_syn_inits = 1 199 endif 200 HaxeHiLink haxeFuncDef Function 201 HaxeHiLink haxeBraces Function 202 HaxeHiLink haxeBranch Conditional 203 HaxeHiLink haxeUserLabelRef haxeUserLabel 204 HaxeHiLink haxeLabel Label 205 HaxeHiLink haxeUserLabel Label 206 HaxeHiLink haxeConditional Conditional 207 HaxeHiLink haxeRepeat Repeat 208 HaxeHiLink haxeExceptions Exception 209 HaxeHiLink haxeAssert Statement 210 HaxeHiLink haxeStatic MoreMsg 211 HaxeHiLink haxeStorageClass StorageClass 212 HaxeHiLink haxeMethodDecl haxeStorageClass 213 HaxeHiLink haxeClassDecl StorageClass 214 HaxeHiLink haxeScopeDecl StorageClass 215 HaxeHiLink haxeBoolean Boolean 216 HaxeHiLink haxeSpecial Special 217 HaxeHiLink haxeSpecialError Error 218 HaxeHiLink haxeSpecialCharError Error 219 HaxeHiLink haxeString String 220 HaxeHiLink haxeSingleString String 221 HaxeHiLink haxeEreg Special 222 HaxeHiLink haxeEregEscape Special 223 HaxeHiLink haxeCharacter Character 224 HaxeHiLink haxeSpecialChar SpecialChar 225 HaxeHiLink haxeNumber Number 226 HaxeHiLink haxeError Error 227 HaxeHiLink haxeStringError Error 228 HaxeHiLink haxeStatement Statement 229 HaxeHiLink haxeOperator Operator 230 HaxeHiLink haxeComment Comment 231 HaxeHiLink haxeDocComment Comment 232 HaxeHiLink haxeLineComment Comment 233 HaxeHiLink haxeConstant Constant 234 HaxeHiLink haxeTypedef Typedef 235 HaxeHiLink haxeTodo Todo 236 HaxeHiLink haxeLangClass Special 237 HaxeHiLink haxeFunction Function 238 239 HaxeHiLink haxeCommentTitle SpecialComment 240 HaxeHiLink haxeDocTags Special 241 HaxeHiLink haxeDocParam Function 242 HaxeHiLink haxeCommentStar haxeComment 243 244 HaxeHiLink haxeType Type 245 HaxeHiLink haxeExternal Include 246 247 HaxeHiLink htmlComment Special 248 HaxeHiLink htmlCommentPart Special 249 HaxeHiLink haxeSpaceError Error 250 251 HaxeHiLink haxeCondIf Macro 252 HaxeHiLink haxeCondElse Macro 253 HaxeHiLink haxeCondEnd Macro 254 HaxeHiLink haxeCondError Error 255 endif 256 257 delcommand HaxeHiLink 258 259 let b:current_syntax = "haxe" 260 261 if main_syntax == 'haxe' 262 unlet main_syntax 263 endif 264 265 let b:spell_options="contained" 266 267 " vim: ts=8 268