citadel

My dotfiles, scripts and nix configs
git clone git://jb55.com/citadel
Log | Files | Refs | README | LICENSE

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