| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- " 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 <args>
- else
- command! -nargs=+ HaxeHiLink hi def link <args>
- 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*\<class\>"ms=s+1
- syn match haxeClassDecl "^class\>"
- syn match haxeClassDecl "[^.]\s*\<class\>"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 "\<System\>"
- 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("<sfile>:p:h")."/haxeid.vim")
- source <sfile>: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="\<case\>" 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 <sfile>: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
|