haxe/haxe.vim

Mon, 28 Jan 2013 17:37:18 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Mon, 28 Jan 2013 17:37:18 +0100
changeset 758
a2c6460cfb16
permissions
-rw-r--r--

Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.

     1 " Vim syntax file
     2 " Language:     haxe
     4 " Please check :help haxe.vim for comments on some of the options available.
     6 "set errorformat=%f\:%l\:\ characters\ %c-%*[^\ ]\ %m,%f\:%l\:\ %m
     7 set errorformat=%f\:%l\:\ characters\ %c-%*[^\ ]\ %m,%f\:%l\:\ %m
     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
    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
    27 " some characters that cannot be in a haxe program (outside a string)
    28 syn match haxeError "[\\@`]"
    29 syn match haxeError "<<<\|=>\|<>\|||=\|&&=\|\*\/"
    31 " use separate name so that it can be deleted in haxecc.vim
    32 syn match   haxeError2 "#\|=<"
    33 HaxeHiLink haxeError2 haxeError
    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    function var final typedef enum
    47 " syn keyword haxeStatic		
    48 syn keyword haxeExceptions      throw try catch finally untyped
    49 syn keyword haxeAssert		assert
    50 syn keyword haxeMethodDecl      synchronized throws
    51 syn keyword haxeClassDecl       extends implements interface
    52 syn match   haxeOperator "\.\.\."
    53 " to differentiate the keyword class from MyClass.class we use a match here
    54 syn match   haxeTypedef		"\.\s*\<class\>"ms=s+1
    55 syn match   haxeClassDecl       "^class\>"
    56 syn match   haxeClassDecl       "[^.]\s*\<class\>"ms=s+1
    57 syn keyword haxeBranch		break continue nextgroup=haxeUserLabelRef skipwhite
    58 syn match   haxeUserLabelRef    "\k\+" contained
    59 syn keyword haxeScopeDecl       static public protected private abstract override 
    61 " haxe.lang.*
    62 syn match haxeLangClass "\<System\>"
    63 syn keyword haxeLangClass  Array BasicType Class Date DateTools EReg Hash IntHash IntIter Iterator Lambda List Math Md5 Reflect Std String StringBuf StringTools Xml XmlType
    64 HaxeHiLink haxeLangClass		     haxeConstant
    65 HaxeHiLink haxeLangObject		     haxeConstant
    66 syn cluster haxeTop add=haxeLangObject,haxeLangClass
    67 syn cluster haxeClasses add=haxeLangClass
    69 if filereadable(expand("<sfile>:p:h")."/haxeid.vim")
    70   source <sfile>:p:h/haxeid.vim
    71 endif
    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
    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
    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
    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
   109 syn cluster haxeTop add=haxeComment,haxeLineComment
   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
   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
   126 " match the special comment /**/
   127 syn match   haxeComment		 "/\*\*/"
   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
   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]\>"
   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 *$"
   155 " unicode characters
   156 syn match   haxeSpecial "\\u\d\{4\}"
   158 syn cluster haxeTop add=haxeString,haxeCharacter,haxeNumber,haxeSpecial,haxeStringError
   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=haxeScopeDecl,haxeType,haxeStorageClass,@haxeClasses
   163     syn region haxeFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=haxeScopeDecl,haxeType,haxeStorageClass,@haxeClasses
   164     syn match  haxeFuncDef "^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=haxeScopeDecl,haxeType,haxeStorageClass,@haxeClasses
   165     syn region haxeFuncDef start=+^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=haxeScopeDecl,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\+\(\(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
   172   endif
   173   syn match  haxeBraces  "[{}]"
   174   syn cluster haxeTop add=haxeFuncDef,haxeBraces
   175 endif
   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
   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
   190 if !exists("haxe_minlines")
   191   let haxe_minlines = 10
   192 endif
   193 exec "syn sync ccomment haxeComment minlines=" . haxe_minlines
   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		haxeStorageClass
   214   HaxeHiLink haxeScopeDecl		haxeStorageClass
   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
   237   HaxeHiLink haxeCommentTitle	SpecialComment
   238   HaxeHiLink haxeDocTags		Special
   239   HaxeHiLink haxeDocParam		Function
   240   HaxeHiLink haxeCommentStar	haxeComment
   242   HaxeHiLink haxeType		Type
   243   HaxeHiLink haxeExternal		Include
   245   HaxeHiLink htmlComment		Special
   246   HaxeHiLink htmlCommentPart	Special
   247   HaxeHiLink haxeSpaceError		Error
   249   HaxeHiLink haxeCondIf Macro
   250   HaxeHiLink haxeCondElse Macro
   251   HaxeHiLink haxeCondEnd Macro
   252   HaxeHiLink haxeCondError Error
   253 endif
   255 delcommand HaxeHiLink
   257 let b:current_syntax = "haxe"
   259 if main_syntax == 'haxe'
   260   unlet main_syntax
   261 endif
   263 let b:spell_options="contained"
   265 " vim: ts=8

mercurial