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