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 Apr 23 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 "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 232 syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 233 234 syn cluster javaTop add=javaDebug 235 236 if version >= 508 || !exists("did_c_syn_inits") 237 JavaHiLink javaDebug Debug 238 JavaHiLink javaDebugString DebugString 239 JavaHiLink javaDebugStringError javaError 240 JavaHiLink javaDebugType DebugType 241 JavaHiLink javaDebugBoolean DebugBoolean 242 JavaHiLink javaDebugNumber Debug 243 JavaHiLink javaDebugSpecial DebugSpecial 244 JavaHiLink javaDebugSpecialCharacter DebugSpecial 245 JavaHiLink javaDebugCharacter DebugString 246 JavaHiLink javaDebugParen Debug 247 248 JavaHiLink DebugString String 249 JavaHiLink DebugSpecial Special 250 JavaHiLink DebugBoolean Boolean 251 JavaHiLink DebugType Type 252 endif 253endif 254 255if exists("java_mark_braces_in_parens_as_errors") 256 syn match javaInParen contained "[{}]" 257 JavaHiLink javaInParen javaError 258 syn cluster javaTop add=javaInParen 259endif 260 261" catch errors caused by wrong parenthesis 262syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1 263syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained 264syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained 265syn match javaParenError ")" 266JavaHiLink javaParenError javaError 267 268if !exists("java_minlines") 269 let java_minlines = 10 270endif 271exec "syn sync ccomment javaComment minlines=" . java_minlines 272 273" The default highlighting. 274if version >= 508 || !exists("did_java_syn_inits") 275 if version < 508 276 let did_java_syn_inits = 1 277 endif 278 JavaHiLink javaFuncDef Function 279 JavaHiLink javaBraces Function 280 JavaHiLink javaBranch Conditional 281 JavaHiLink javaUserLabelRef javaUserLabel 282 JavaHiLink javaLabel Label 283 JavaHiLink javaUserLabel Label 284 JavaHiLink javaConditional Conditional 285 JavaHiLink javaRepeat Repeat 286 JavaHiLink javaExceptions Exception 287 JavaHiLink javaAssert Statement 288 JavaHiLink javaStorageClass StorageClass 289 JavaHiLink javaMethodDecl javaStorageClass 290 JavaHiLink javaClassDecl javaStorageClass 291 JavaHiLink javaScopeDecl javaStorageClass 292 JavaHiLink javaBoolean Boolean 293 JavaHiLink javaSpecial Special 294 JavaHiLink javaSpecialError Error 295 JavaHiLink javaSpecialCharError Error 296 JavaHiLink javaString String 297 JavaHiLink javaCharacter Character 298 JavaHiLink javaSpecialChar SpecialChar 299 JavaHiLink javaNumber Number 300 JavaHiLink javaError Error 301 JavaHiLink javaStringError Error 302 JavaHiLink javaStatement Statement 303 JavaHiLink javaOperator Operator 304 JavaHiLink javaComment Comment 305 JavaHiLink javaDocComment Comment 306 JavaHiLink javaLineComment Comment 307 JavaHiLink javaConstant Constant 308 JavaHiLink javaTypedef Typedef 309 JavaHiLink javaTodo Todo 310 311 JavaHiLink javaCommentTitle SpecialComment 312 JavaHiLink javaDocTags Special 313 JavaHiLink javaDocParam Function 314 JavaHiLink javaCommentStar javaComment 315 316 JavaHiLink javaType Type 317 JavaHiLink javaExternal Include 318 319 JavaHiLink htmlComment Special 320 JavaHiLink htmlCommentPart Special 321 JavaHiLink javaSpaceError Error 322endif 323 324delcommand JavaHiLink 325 326let b:current_syntax = "java" 327 328if main_syntax == 'java' 329 unlet main_syntax 330endif 331 332let b:spell_options="contained" 333 334" vim: ts=8 335