diff -r 7f3c34b6208f -r 6052d0605a74 haxe/haxe.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/haxe/haxe.vim Wed Feb 25 13:55:52 2009 +0100 @@ -0,0 +1,265 @@ +" Vim syntax file +" Language: haxe + +" Please check :help haxe.vim for comments on some of the options available. + +"set errorformat=%f\:%l\:\ characters\ %c-%*[^\ ]\ %m,%f\:%l\:\ %m +set errorformat=%f\:%l\:\ characters\ %c-%*[^\ ]\ %m,%f\:%l\:\ %m + +" Quit when a syntax file was already loaded +if !exists("main_syntax") + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + " we define it here so that included files can test for it + let main_syntax='haxe' +endif + +" don't use standard HiLink, it will not work with included syntax files +if version < 508 + command! -nargs=+ HaxeHiLink hi link +else + command! -nargs=+ HaxeHiLink hi def link +endif + +" some characters that cannot be in a haxe program (outside a string) +syn match haxeError "[\\@`]" +syn match haxeError "<<<\|=>\|<>\|||=\|&&=\|\*\/" + +" use separate name so that it can be deleted in haxecc.vim +syn match haxeError2 "#\|=<" +HaxeHiLink haxeError2 haxeError + + +" keyword definitions +syn keyword haxeExternal import extern package +syn keyword haxeConditional if else switch +syn keyword haxeRepeat while for do in +syn keyword haxeBoolean true false +syn keyword haxeConstant null +syn keyword haxeTypedef this super +syn keyword haxeOperator new cast +syn keyword haxeType Void Bool Int Float Dynamic +syn keyword haxeStatement return +syn keyword haxeStorageClass function var final typedef enum +" syn keyword haxeStatic +syn keyword haxeExceptions throw try catch finally untyped +syn keyword haxeAssert assert +syn keyword haxeMethodDecl synchronized throws +syn keyword haxeClassDecl extends implements interface +syn match haxeOperator "\.\.\." +" to differentiate the keyword class from MyClass.class we use a match here +syn match haxeTypedef "\.\s*\"ms=s+1 +syn match haxeClassDecl "^class\>" +syn match haxeClassDecl "[^.]\s*\"ms=s+1 +syn keyword haxeBranch break continue nextgroup=haxeUserLabelRef skipwhite +syn match haxeUserLabelRef "\k\+" contained +syn keyword haxeScopeDecl static public protected private abstract override + +" haxe.lang.* +syn match haxeLangClass "\" +syn keyword haxeLangClass Array BasicType Class Date DateTools EReg Hash IntHash IntIter Iterator Lambda List Math Md5 Reflect Std String StringBuf StringTools Xml XmlType +HaxeHiLink haxeLangClass haxeConstant +HaxeHiLink haxeLangObject haxeConstant +syn cluster haxeTop add=haxeLangObject,haxeLangClass +syn cluster haxeClasses add=haxeLangClass + +if filereadable(expand(":p:h")."/haxeid.vim") + source :p:h/haxeid.vim +endif + +if exists("haxe_space_errors") + if !exists("haxe_no_trail_space_error") + syn match haxeSpaceError "\s\+$" + endif + if !exists("haxe_no_tab_space_error") + syn match haxeSpaceError " \+\t"me=e-1 + endif +endif + +syn region haxeLabelRegion transparent matchgroup=haxeLabel start="\" matchgroup=NONE end=":" contains=haxeNumber,haxeCharacter +syn match haxeUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=haxeLabel +syn keyword haxeLabel default + +" The following cluster contains all haxe groups except the contained ones +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 + + +" Comments +syn keyword haxeTodo contained TODO FIXME XXX +if exists("haxe_comment_strings") + syn region haxeCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=haxeSpecial,haxeCommentStar,haxeSpecialChar,@Spell + syn region haxeComment2String contained start=+"+ end=+$\|"+ contains=haxeSpecial,haxeSpecialChar,@Spell + syn match haxeCommentCharacter contained "'\\[^']\{1,6\}'" contains=haxeSpecialChar + syn match haxeCommentCharacter contained "'\\''" contains=haxeSpecialChar + syn match haxeCommentCharacter contained "'[^\\]'" + syn cluster haxeCommentSpecial add=haxeCommentString,haxeCommentCharacter,haxeNumber + syn cluster haxeCommentSpecial2 add=haxeComment2String,haxeCommentCharacter,haxeNumber +endif +syn region haxeComment start="/\*" end="\*/" contains=@haxeCommentSpecial,haxeTodo,@Spell +syn match haxeCommentStar contained "^\s*\*[^/]"me=e-1 +syn match haxeCommentStar contained "^\s*\*$" +syn match haxeLineComment "//.*" contains=@haxeCommentSpecial2,haxeTodo,@Spell +HaxeHiLink haxeCommentString haxeString +HaxeHiLink haxeComment2String haxeString +HaxeHiLink haxeCommentCharacter haxeCharacter + +syn cluster haxeTop add=haxeComment,haxeLineComment + +if exists("haxe_haxedoc") || main_syntax == 'jsp' + syntax case ignore + " syntax coloring for haxedoc comments (HTML) + " syntax include @haxeHtml :p:h/html.vim + " unlet b:current_syntax + syn region haxeDocComment start="/\*\*" end="\*/" keepend contains=haxeCommentTitle,@haxeHtml,haxeDocTags,haxeTodo,@Spell + 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 + + syn region haxeDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" + syn match haxeDocTags contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=haxeDocParam + syn match haxeDocParam contained "\s\S\+" + syn match haxeDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>" + syntax case match +endif + +" match the special comment /**/ +syn match haxeComment "/\*\*/" + +" Strings and constants +syn match haxeSpecialError contained "\\." +syn match haxeSpecialCharError contained "[^']" +syn match haxeSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" +syn match haxeEregEscape contained "\(\\\\\|\\/\)" +syn region haxeEreg start=+\~\/+ end=+\/[gims]*+ contains=haxeEregEscape + +syn region haxeString start=+"+ end=+"+ contains=haxeSpecialChar,haxeSpecialError,@Spell +syn region haxeSingleString start=+'+ end=+'+ +" next line disabled, it can cause a crash for a long line +"syn match haxeStringError +"\([^"\\]\|\\.\)*$+ +syn match haxeCharacter "'[^']*'" contains=haxeSpecialChar,haxeSpecialCharError +syn match haxeCharacter "'\\''" contains=haxeSpecialChar +syn match haxeCharacter "'[^\\]'" +syn match haxeNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" +"syn match haxeNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" +syn match haxeNumber "\(\<\d\+\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" +syn match haxeNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" +syn match haxeNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" + + +syn region haxeCondIf start="#if \+!\?" end="\W" skip="([A-Za-z0-9_ |&!]\+)" +syn region haxeCondElse start="#else \+!\?" end="\W" skip="([A-Za-z0-9_ |&!]\+)" +syn match haxeCondEnd "#end" +syn match haxeCondError "#else *$" + +" unicode characters +syn match haxeSpecial "\\u\d\{4\}" + +syn cluster haxeTop add=haxeString,haxeCharacter,haxeNumber,haxeSpecial,haxeStringError + +if exists("haxe_highlight_functions") + if haxe_highlight_functions == "indent" + syn match haxeFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=haxeScopeDecl,haxeType,haxeStorageClass,@haxeClasses + syn region haxeFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=haxeScopeDecl,haxeType,haxeStorageClass,@haxeClasses + syn match haxeFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=haxeScopeDecl,haxeType,haxeStorageClass,@haxeClasses + syn region haxeFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=haxeScopeDecl,haxeType,haxeStorageClass,@haxeClasses + else + " This line catches method declarations at any indentation>0, but it assumes + " two things: + " 1. class names are always capitalized (ie: Button) + " 2. method names are never capitalized (except constructors, of course) + syn region haxeFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|override\|final\|native\|synchronized\)\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=haxeScopeDecl,haxeType,haxeStorageClass,haxeComment,haxeLineComment,@haxeClasses + endif + syn match haxeBraces "[{}]" + syn cluster haxeTop add=haxeFuncDef,haxeBraces +endif + +if exists("haxe_mark_braces_in_parens_as_errors") + syn match haxeInParen contained "[{}]" + HaxeHiLink haxeInParen haxeError + syn cluster haxeTop add=haxeInParen +endif + +" catch errors caused by wrong parenthesis +syn region haxeParenT transparent matchgroup=haxeParen start="(" end=")" contains=@haxeTop,haxeParenT1 +syn region haxeParenT1 transparent matchgroup=haxeParen1 start="(" end=")" contains=@haxeTop,haxeParenT2 contained +syn region haxeParenT2 transparent matchgroup=haxeParen2 start="(" end=")" contains=@haxeTop,haxeParenT contained +syn match haxeParenError ")" +HaxeHiLink haxeParenError haxeError + +if !exists("haxe_minlines") + let haxe_minlines = 10 +endif +exec "syn sync ccomment haxeComment minlines=" . haxe_minlines + +" The default highlighting. +if version >= 508 || !exists("did_haxe_syn_inits") + if version < 508 + let did_haxe_syn_inits = 1 + endif + HaxeHiLink haxeFuncDef Function + HaxeHiLink haxeBraces Function + HaxeHiLink haxeBranch Conditional + HaxeHiLink haxeUserLabelRef haxeUserLabel + HaxeHiLink haxeLabel Label + HaxeHiLink haxeUserLabel Label + HaxeHiLink haxeConditional Conditional + HaxeHiLink haxeRepeat Repeat + HaxeHiLink haxeExceptions Exception + HaxeHiLink haxeAssert Statement + HaxeHiLink haxeStatic MoreMsg + HaxeHiLink haxeStorageClass StorageClass + HaxeHiLink haxeMethodDecl haxeStorageClass + HaxeHiLink haxeClassDecl haxeStorageClass + HaxeHiLink haxeScopeDecl haxeStorageClass + HaxeHiLink haxeBoolean Boolean + HaxeHiLink haxeSpecial Special + HaxeHiLink haxeSpecialError Error + HaxeHiLink haxeSpecialCharError Error + HaxeHiLink haxeString String + HaxeHiLink haxeSingleString String + HaxeHiLink haxeEreg Special + HaxeHiLink haxeEregEscape Special + HaxeHiLink haxeCharacter Character + HaxeHiLink haxeSpecialChar SpecialChar + HaxeHiLink haxeNumber Number + HaxeHiLink haxeError Error + HaxeHiLink haxeStringError Error + HaxeHiLink haxeStatement Statement + HaxeHiLink haxeOperator Operator + HaxeHiLink haxeComment Comment + HaxeHiLink haxeDocComment Comment + HaxeHiLink haxeLineComment Comment + HaxeHiLink haxeConstant Constant + HaxeHiLink haxeTypedef Typedef + HaxeHiLink haxeTodo Todo + + HaxeHiLink haxeCommentTitle SpecialComment + HaxeHiLink haxeDocTags Special + HaxeHiLink haxeDocParam Function + HaxeHiLink haxeCommentStar haxeComment + + HaxeHiLink haxeType Type + HaxeHiLink haxeExternal Include + + HaxeHiLink htmlComment Special + HaxeHiLink htmlCommentPart Special + HaxeHiLink haxeSpaceError Error + + HaxeHiLink haxeCondIf Macro + HaxeHiLink haxeCondElse Macro + HaxeHiLink haxeCondEnd Macro + HaxeHiLink haxeCondError Error +endif + +delcommand HaxeHiLink + +let b:current_syntax = "haxe" + +if main_syntax == 'haxe' + unlet main_syntax +endif + +let b:spell_options="contained" + +" vim: ts=8