Mon, 28 Jan 2013 17:37:18 +0100
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