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: 2005 Nov 04 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 match javaAnnotation "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>" 62syn match javaClassDecl "@interface\>" 63syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite 64syn match javaUserLabelRef "\k\+" contained 65syn match javaVarArg "\.\.\." 66syn keyword javaScopeDecl public protected private abstract 67 68if 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 110endif 111 112if filereadable(expand("<sfile>:p:h")."/javaid.vim") 113 source <sfile>:p:h/javaid.vim 114endif 115 116if 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 123endif 124 125syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter 126syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel 127syn keyword javaLabel default 128 129if !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 133endif 134 135" The following cluster contains all java groups except the contained ones 136syn 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 137 138 139" Comments 140syn keyword javaTodo contained TODO FIXME XXX 141if 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 149endif 150syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell 151syn match javaCommentStar contained "^\s*\*[^/]"me=e-1 152syn match javaCommentStar contained "^\s*\*$" 153syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell 154JavaHiLink javaCommentString javaString 155JavaHiLink javaComment2String javaString 156JavaHiLink javaCommentCharacter javaCharacter 157 158syn cluster javaTop add=javaComment,javaLineComment 159 160if !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 173endif 174 175" match the special comment /**/ 176syn match javaComment "/\*\*/" 177 178" Strings and constants 179syn match javaSpecialError contained "\\." 180syn match javaSpecialCharError contained "[^']" 181syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" 182syn 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 +"\([^"\\]\|\\.\)*$+ 185syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError 186syn match javaCharacter "'\\''" contains=javaSpecialChar 187syn match javaCharacter "'[^\\]'" 188syn match javaNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" 189syn match javaNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" 190syn match javaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" 191syn match javaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" 192 193" unicode characters 194syn match javaSpecial "\\u\d\{4\}" 195 196syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError 197 198if 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 213endif 214 215if 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 234 syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 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 257endif 258 259if exists("java_mark_braces_in_parens_as_errors") 260 syn match javaInParen contained "[{}]" 261 JavaHiLink javaInParen javaError 262 syn cluster javaTop add=javaInParen 263endif 264 265" catch errors caused by wrong parenthesis 266syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1 267syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained 268syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained 269syn match javaParenError ")" 270" catch errors caused by wrong square parenthesis 271syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1 272syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained 273syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained 274syn match javaParenError "\]" 275 276JavaHiLink javaParenError javaError 277 278if !exists("java_minlines") 279 let java_minlines = 10 280endif 281exec "syn sync ccomment javaComment minlines=" . java_minlines 282 283" The default highlighting. 284if version >= 508 || !exists("did_java_syn_inits") 285 if version < 508 286 let did_java_syn_inits = 1 287 endif 288 JavaHiLink javaFuncDef Function 289 JavaHiLink javaVarArg Function 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 321 JavaHiLink javaAnnotation PreProc 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 334endif 335 336delcommand JavaHiLink 337 338let b:current_syntax = "java" 339 340if main_syntax == 'java' 341 unlet main_syntax 342endif 343 344let b:spell_options="contained" 345 346" vim: ts=8 347