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