7
|
1 " Vim syntax file
|
|
2 " Language: Java
|
|
3 " Maintainer: Claudio Fleiner <claudio@fleiner.com>
|
|
4 " URL: http://www.fleiner.com/vim/syntax/java.vim
|
557
|
5 " Last Change: 2005 Nov 04
|
7
|
6
|
|
7 " Please check :help java.vim for comments on some of the options available.
|
|
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='java'
|
|
18 endif
|
|
19
|
|
20 " don't use standard HiLink, it will not work with included syntax files
|
|
21 if version < 508
|
|
22 command! -nargs=+ JavaHiLink hi link <args>
|
|
23 else
|
|
24 command! -nargs=+ JavaHiLink hi def link <args>
|
|
25 endif
|
|
26
|
|
27 " some characters that cannot be in a java program (outside a string)
|
|
28 syn match javaError "[\\@`]"
|
|
29 syn match javaError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
|
|
30 syn match javaOK "\.\.\."
|
|
31
|
|
32 " use separate name so that it can be deleted in javacc.vim
|
|
33 syn match javaError2 "#\|=<"
|
|
34 JavaHiLink javaError2 javaError
|
|
35
|
|
36
|
|
37
|
|
38 " keyword definitions
|
|
39 syn keyword javaExternal native package
|
36
|
40 syn match javaExternal "\<import\>\(\s\+static\>\)\?"
|
7
|
41 syn keyword javaError goto const
|
|
42 syn keyword javaConditional if else switch
|
|
43 syn keyword javaRepeat while for do
|
|
44 syn keyword javaBoolean true false
|
|
45 syn keyword javaConstant null
|
|
46 syn keyword javaTypedef this super
|
|
47 syn keyword javaOperator new instanceof
|
|
48 syn keyword javaType boolean char byte short int long float double
|
|
49 syn keyword javaType void
|
|
50 syn keyword javaStatement return
|
|
51 syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable
|
|
52 syn keyword javaExceptions throw try catch finally
|
|
53 syn keyword javaAssert assert
|
|
54 syn keyword javaMethodDecl synchronized throws
|
|
55 syn keyword javaClassDecl extends implements interface
|
|
56 " to differentiate the keyword class from MyClass.class we use a match here
|
|
57 syn match javaTypedef "\.\s*\<class\>"ms=s+1
|
|
58 syn keyword javaClassDecl enum
|
|
59 syn match javaClassDecl "^class\>"
|
|
60 syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1
|
557
|
61 syn match javaAnnotation "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>"
|
|
62 syn match javaClassDecl "@interface\>"
|
7
|
63 syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
|
|
64 syn match javaUserLabelRef "\k\+" contained
|
557
|
65 syn match javaVarArg "\.\.\."
|
7
|
66 syn keyword javaScopeDecl public protected private abstract
|
|
67
|
|
68 if exists("java_highlight_java_lang_ids") || exists("java_highlight_java_lang") || exists("java_highlight_all")
|
|
69 " java.lang.*
|
|
70 syn match javaLangClass "\<System\>"
|
|
71 syn keyword javaLangClass Cloneable Comparable Runnable Boolean Byte Class
|
|
72 syn keyword javaLangClass Character CharSequence ClassLoader Compiler Double Float
|
|
73 syn keyword javaLangClass Integer InheritableThreadLocal Long Math Number Object Package Process
|
|
74 syn keyword javaLangClass Runtime RuntimePermission InheritableThreadLocal
|
|
75 syn keyword javaLangClass SecurityManager Short String StrictMath StackTraceElement
|
|
76 syn keyword javaLangClass StringBuffer Thread ThreadGroup
|
|
77 syn keyword javaLangClass ThreadLocal Throwable Void ArithmeticException
|
|
78 syn keyword javaLangClass ArrayIndexOutOfBoundsException AssertionError
|
|
79 syn keyword javaLangClass ArrayStoreException ClassCastException
|
|
80 syn keyword javaLangClass ClassNotFoundException
|
|
81 syn keyword javaLangClass CloneNotSupportedException Exception
|
|
82 syn keyword javaLangClass IllegalAccessException
|
|
83 syn keyword javaLangClass IllegalArgumentException
|
|
84 syn keyword javaLangClass IllegalMonitorStateException
|
|
85 syn keyword javaLangClass IllegalStateException
|
|
86 syn keyword javaLangClass IllegalThreadStateException
|
|
87 syn keyword javaLangClass IndexOutOfBoundsException
|
|
88 syn keyword javaLangClass InstantiationException InterruptedException
|
|
89 syn keyword javaLangClass NegativeArraySizeException NoSuchFieldException
|
|
90 syn keyword javaLangClass NoSuchMethodException NullPointerException
|
|
91 syn keyword javaLangClass NumberFormatException RuntimeException
|
|
92 syn keyword javaLangClass SecurityException StringIndexOutOfBoundsException
|
|
93 syn keyword javaLangClass UnsupportedOperationException
|
|
94 syn keyword javaLangClass AbstractMethodError ClassCircularityError
|
|
95 syn keyword javaLangClass ClassFormatError Error ExceptionInInitializerError
|
|
96 syn keyword javaLangClass IllegalAccessError InstantiationError
|
|
97 syn keyword javaLangClass IncompatibleClassChangeError InternalError
|
|
98 syn keyword javaLangClass LinkageError NoClassDefFoundError
|
|
99 syn keyword javaLangClass NoSuchFieldError NoSuchMethodError
|
|
100 syn keyword javaLangClass OutOfMemoryError StackOverflowError
|
|
101 syn keyword javaLangClass ThreadDeath UnknownError UnsatisfiedLinkError
|
|
102 syn keyword javaLangClass UnsupportedClassVersionError VerifyError
|
|
103 syn keyword javaLangClass VirtualMachineError
|
|
104 syn keyword javaLangObject clone equals finalize getClass hashCode
|
|
105 syn keyword javaLangObject notify notifyAll toString wait
|
|
106 JavaHiLink javaLangClass javaConstant
|
|
107 JavaHiLink javaLangObject javaConstant
|
|
108 syn cluster javaTop add=javaLangObject,javaLangClass
|
|
109 syn cluster javaClasses add=javaLangClass
|
|
110 endif
|
|
111
|
|
112 if filereadable(expand("<sfile>:p:h")."/javaid.vim")
|
|
113 source <sfile>:p:h/javaid.vim
|
|
114 endif
|
|
115
|
|
116 if exists("java_space_errors")
|
|
117 if !exists("java_no_trail_space_error")
|
|
118 syn match javaSpaceError "\s\+$"
|
|
119 endif
|
|
120 if !exists("java_no_tab_space_error")
|
|
121 syn match javaSpaceError " \+\t"me=e-1
|
|
122 endif
|
|
123 endif
|
|
124
|
|
125 syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
|
|
126 syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
|
|
127 syn keyword javaLabel default
|
|
128
|
|
129 if !exists("java_allow_cpp_keywords")
|
|
130 syn keyword javaError auto delete extern friend inline redeclared
|
|
131 syn keyword javaError register signed sizeof struct template typedef union
|
|
132 syn keyword javaError unsigned operator
|
|
133 endif
|
|
134
|
|
135 " The following cluster contains all java groups except the contained ones
|
557
|
136 syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaClassDecl,javaClassDecl,javaScopeDecl,javaError,javaError2,javaUserLabel,javaLangObject,javaAnnotation,javaVarArg
|
7
|
137
|
|
138
|
|
139 " Comments
|
|
140 syn keyword javaTodo contained TODO FIXME XXX
|
|
141 if exists("java_comment_strings")
|
|
142 syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
|
|
143 syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
|
|
144 syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
|
|
145 syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar
|
|
146 syn match javaCommentCharacter contained "'[^\\]'"
|
|
147 syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
|
|
148 syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
|
|
149 endif
|
|
150 syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
|
|
151 syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
|
|
152 syn match javaCommentStar contained "^\s*\*$"
|
|
153 syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
|
|
154 JavaHiLink javaCommentString javaString
|
|
155 JavaHiLink javaComment2String javaString
|
|
156 JavaHiLink javaCommentCharacter javaCharacter
|
|
157
|
|
158 syn cluster javaTop add=javaComment,javaLineComment
|
|
159
|
|
160 if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
|
|
161 syntax case ignore
|
|
162 " syntax coloring for javadoc comments (HTML)
|
|
163 syntax include @javaHtml <sfile>:p:h/html.vim
|
|
164 unlet b:current_syntax
|
|
165 syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaTodo,@Spell
|
|
166 syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags
|
|
167
|
|
168 syn region javaDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
|
|
169 syn match javaDocTags contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
|
|
170 syn match javaDocParam contained "\s\S\+"
|
|
171 syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
|
|
172 syntax case match
|
|
173 endif
|
|
174
|
|
175 " match the special comment /**/
|
|
176 syn match javaComment "/\*\*/"
|
|
177
|
|
178 " Strings and constants
|
|
179 syn match javaSpecialError contained "\\."
|
|
180 syn match javaSpecialCharError contained "[^']"
|
|
181 syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
|
|
182 syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
|
|
183 " next line disabled, it can cause a crash for a long line
|
|
184 "syn match javaStringError +"\([^"\\]\|\\.\)*$+
|
|
185 syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
|
|
186 syn match javaCharacter "'\\''" contains=javaSpecialChar
|
|
187 syn match javaCharacter "'[^\\]'"
|
|
188 syn match javaNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
|
|
189 syn match javaNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
|
|
190 syn match javaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
|
|
191 syn match javaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
|
|
192
|
|
193 " unicode characters
|
|
194 syn match javaSpecial "\\u\d\{4\}"
|
|
195
|
|
196 syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
|
|
197
|
|
198 if exists("java_highlight_functions")
|
|
199 if java_highlight_functions == "indent"
|
|
200 syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
|
|
201 syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
|
|
202 syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
|
|
203 syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
|
|
204 else
|
|
205 " This line catches method declarations at any indentation>0, but it assumes
|
|
206 " two things:
|
|
207 " 1. class names are always capitalized (ie: Button)
|
|
208 " 2. method names are never capitalized (except constructors, of course)
|
|
209 syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|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*([^0-9]+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses
|
|
210 endif
|
|
211 syn match javaBraces "[{}]"
|
|
212 syn cluster javaTop add=javaFuncDef,javaBraces
|
|
213 endif
|
|
214
|
|
215 if exists("java_highlight_debug")
|
|
216
|
|
217 " Strings and constants
|
|
218 syn match javaDebugSpecial contained "\\\d\d\d\|\\."
|
|
219 syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
|
|
220 syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
|
|
221 syn match javaDebugCharacter contained "'[^\\]'"
|
|
222 syn match javaDebugSpecialCharacter contained "'\\.'"
|
|
223 syn match javaDebugSpecialCharacter contained "'\\''"
|
|
224 syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
|
|
225 syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
|
|
226 syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
|
|
227 syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
|
|
228 syn keyword javaDebugBoolean contained true false
|
|
229 syn keyword javaDebugType contained null this super
|
|
230 syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
|
|
231
|
|
232 " to make this work you must define the highlighting for these groups
|
|
233 syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
|
36
|
234 syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
|
7
|
235 syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
|
|
236 syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
|
|
237
|
|
238 syn cluster javaTop add=javaDebug
|
|
239
|
|
240 if version >= 508 || !exists("did_c_syn_inits")
|
|
241 JavaHiLink javaDebug Debug
|
|
242 JavaHiLink javaDebugString DebugString
|
|
243 JavaHiLink javaDebugStringError javaError
|
|
244 JavaHiLink javaDebugType DebugType
|
|
245 JavaHiLink javaDebugBoolean DebugBoolean
|
|
246 JavaHiLink javaDebugNumber Debug
|
|
247 JavaHiLink javaDebugSpecial DebugSpecial
|
|
248 JavaHiLink javaDebugSpecialCharacter DebugSpecial
|
|
249 JavaHiLink javaDebugCharacter DebugString
|
|
250 JavaHiLink javaDebugParen Debug
|
|
251
|
|
252 JavaHiLink DebugString String
|
|
253 JavaHiLink DebugSpecial Special
|
|
254 JavaHiLink DebugBoolean Boolean
|
|
255 JavaHiLink DebugType Type
|
|
256 endif
|
|
257 endif
|
|
258
|
|
259 if exists("java_mark_braces_in_parens_as_errors")
|
|
260 syn match javaInParen contained "[{}]"
|
|
261 JavaHiLink javaInParen javaError
|
|
262 syn cluster javaTop add=javaInParen
|
|
263 endif
|
|
264
|
|
265 " catch errors caused by wrong parenthesis
|
|
266 syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1
|
|
267 syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
|
|
268 syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained
|
|
269 syn match javaParenError ")"
|
36
|
270 " catch errors caused by wrong square parenthesis
|
|
271 syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
|
|
272 syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
|
|
273 syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained
|
|
274 syn match javaParenError "\]"
|
|
275
|
7
|
276 JavaHiLink javaParenError javaError
|
|
277
|
|
278 if !exists("java_minlines")
|
|
279 let java_minlines = 10
|
|
280 endif
|
|
281 exec "syn sync ccomment javaComment minlines=" . java_minlines
|
|
282
|
|
283 " The default highlighting.
|
|
284 if version >= 508 || !exists("did_java_syn_inits")
|
|
285 if version < 508
|
|
286 let did_java_syn_inits = 1
|
|
287 endif
|
|
288 JavaHiLink javaFuncDef Function
|
557
|
289 JavaHiLink javaVarArg Function
|
7
|
290 JavaHiLink javaBraces Function
|
|
291 JavaHiLink javaBranch Conditional
|
|
292 JavaHiLink javaUserLabelRef javaUserLabel
|
|
293 JavaHiLink javaLabel Label
|
|
294 JavaHiLink javaUserLabel Label
|
|
295 JavaHiLink javaConditional Conditional
|
|
296 JavaHiLink javaRepeat Repeat
|
|
297 JavaHiLink javaExceptions Exception
|
|
298 JavaHiLink javaAssert Statement
|
|
299 JavaHiLink javaStorageClass StorageClass
|
|
300 JavaHiLink javaMethodDecl javaStorageClass
|
|
301 JavaHiLink javaClassDecl javaStorageClass
|
|
302 JavaHiLink javaScopeDecl javaStorageClass
|
|
303 JavaHiLink javaBoolean Boolean
|
|
304 JavaHiLink javaSpecial Special
|
|
305 JavaHiLink javaSpecialError Error
|
|
306 JavaHiLink javaSpecialCharError Error
|
|
307 JavaHiLink javaString String
|
|
308 JavaHiLink javaCharacter Character
|
|
309 JavaHiLink javaSpecialChar SpecialChar
|
|
310 JavaHiLink javaNumber Number
|
|
311 JavaHiLink javaError Error
|
|
312 JavaHiLink javaStringError Error
|
|
313 JavaHiLink javaStatement Statement
|
|
314 JavaHiLink javaOperator Operator
|
|
315 JavaHiLink javaComment Comment
|
|
316 JavaHiLink javaDocComment Comment
|
|
317 JavaHiLink javaLineComment Comment
|
|
318 JavaHiLink javaConstant Constant
|
|
319 JavaHiLink javaTypedef Typedef
|
|
320 JavaHiLink javaTodo Todo
|
557
|
321 JavaHiLink javaAnnotation PreProc
|
7
|
322
|
|
323 JavaHiLink javaCommentTitle SpecialComment
|
|
324 JavaHiLink javaDocTags Special
|
|
325 JavaHiLink javaDocParam Function
|
|
326 JavaHiLink javaCommentStar javaComment
|
|
327
|
|
328 JavaHiLink javaType Type
|
|
329 JavaHiLink javaExternal Include
|
|
330
|
|
331 JavaHiLink htmlComment Special
|
|
332 JavaHiLink htmlCommentPart Special
|
|
333 JavaHiLink javaSpaceError Error
|
|
334 endif
|
|
335
|
|
336 delcommand JavaHiLink
|
|
337
|
|
338 let b:current_syntax = "java"
|
|
339
|
|
340 if main_syntax == 'java'
|
|
341 unlet main_syntax
|
|
342 endif
|
|
343
|
|
344 let b:spell_options="contained"
|
|
345
|
|
346 " vim: ts=8
|