10c5fa7d7SBram Moolenaar" Vim syntax file 20c5fa7d7SBram Moolenaar" Language: Java 3071d4279SBram Moolenaar" Maintainer: Claudio Fleiner <[email protected]> 4071d4279SBram Moolenaar" URL: http://www.fleiner.com/vim/syntax/java.vim 5f3c2afb7SBram Moolenaar" Last Change: 2015 March 01 6071d4279SBram Moolenaar 7071d4279SBram Moolenaar" Please check :help java.vim for comments on some of the options available. 8071d4279SBram Moolenaar 989bcfda6SBram Moolenaar" quit when a syntax file was already loaded 10071d4279SBram Moolenaarif !exists("main_syntax") 1189bcfda6SBram Moolenaar if exists("b:current_syntax") 12071d4279SBram Moolenaar finish 13071d4279SBram Moolenaar endif 14071d4279SBram Moolenaar " we define it here so that included files can test for it 15071d4279SBram Moolenaar let main_syntax='java' 165c73622aSBram Moolenaar syn region javaFold start="{" end="}" transparent fold 17071d4279SBram Moolenaarendif 18071d4279SBram Moolenaar 190c5fa7d7SBram Moolenaarlet s:cpo_save = &cpo 200c5fa7d7SBram Moolenaarset cpo&vim 210c5fa7d7SBram Moolenaar 22071d4279SBram Moolenaar" some characters that cannot be in a java program (outside a string) 23071d4279SBram Moolenaarsyn match javaError "[\\@`]" 24f3c2afb7SBram Moolenaarsyn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/" 250c5fa7d7SBram Moolenaar 26071d4279SBram Moolenaarsyn match javaOK "\.\.\." 27071d4279SBram Moolenaar 28071d4279SBram Moolenaar" use separate name so that it can be deleted in javacc.vim 29071d4279SBram Moolenaarsyn match javaError2 "#\|=<" 30*f37506f6SBram Moolenaarhi def link javaError2 javaError 31071d4279SBram Moolenaar 32071d4279SBram Moolenaar 33071d4279SBram Moolenaar 34071d4279SBram Moolenaar" keyword definitions 35071d4279SBram Moolenaarsyn keyword javaExternal native package 36293ee4d4SBram Moolenaarsyn match javaExternal "\<import\>\(\s\+static\>\)\?" 37071d4279SBram Moolenaarsyn keyword javaError goto const 38071d4279SBram Moolenaarsyn keyword javaConditional if else switch 39071d4279SBram Moolenaarsyn keyword javaRepeat while for do 40071d4279SBram Moolenaarsyn keyword javaBoolean true false 41071d4279SBram Moolenaarsyn keyword javaConstant null 42071d4279SBram Moolenaarsyn keyword javaTypedef this super 43071d4279SBram Moolenaarsyn keyword javaOperator new instanceof 44071d4279SBram Moolenaarsyn keyword javaType boolean char byte short int long float double 45071d4279SBram Moolenaarsyn keyword javaType void 46071d4279SBram Moolenaarsyn keyword javaStatement return 47071d4279SBram Moolenaarsyn keyword javaStorageClass static synchronized transient volatile final strictfp serializable 48071d4279SBram Moolenaarsyn keyword javaExceptions throw try catch finally 49071d4279SBram Moolenaarsyn keyword javaAssert assert 50071d4279SBram Moolenaarsyn keyword javaMethodDecl synchronized throws 51071d4279SBram Moolenaarsyn keyword javaClassDecl extends implements interface 52071d4279SBram Moolenaar" to differentiate the keyword class from MyClass.class we use a match here 53071d4279SBram Moolenaarsyn match javaTypedef "\.\s*\<class\>"ms=s+1 54071d4279SBram Moolenaarsyn keyword javaClassDecl enum 55071d4279SBram Moolenaarsyn match javaClassDecl "^class\>" 56071d4279SBram Moolenaarsyn match javaClassDecl "[^.]\s*\<class\>"ms=s+1 57f3c2afb7SBram Moolenaarsyn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>\(([^)]*)\)\=" contains=javaString 58a5792f58SBram Moolenaarsyn match javaClassDecl "@interface\>" 59071d4279SBram Moolenaarsyn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite 60071d4279SBram Moolenaarsyn match javaUserLabelRef "\k\+" contained 61a5792f58SBram Moolenaarsyn match javaVarArg "\.\.\." 62071d4279SBram Moolenaarsyn keyword javaScopeDecl public protected private abstract 63071d4279SBram Moolenaar 648ada17c4SBram Moolenaarif exists("java_highlight_java_lang_ids") 658ada17c4SBram Moolenaar let java_highlight_all=1 668ada17c4SBram Moolenaarendif 678ada17c4SBram Moolenaarif exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang") 68071d4279SBram Moolenaar " java.lang.* 69071d4279SBram Moolenaar syn match javaLangClass "\<System\>" 708ada17c4SBram Moolenaar syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException 718ada17c4SBram Moolenaar syn cluster javaTop add=javaR_JavaLang 728ada17c4SBram Moolenaar syn cluster javaClasses add=javaR_JavaLang 73*f37506f6SBram Moolenaar hi def link javaR_JavaLang javaR_Java 748ada17c4SBram Moolenaar 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 758ada17c4SBram Moolenaar syn cluster javaTop add=javaC_JavaLang 768ada17c4SBram Moolenaar syn cluster javaClasses add=javaC_JavaLang 77*f37506f6SBram Moolenaar hi def link javaC_JavaLang javaC_Java 788ada17c4SBram Moolenaar 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 798ada17c4SBram Moolenaar syn cluster javaTop add=javaE_JavaLang 808ada17c4SBram Moolenaar syn cluster javaClasses add=javaE_JavaLang 81*f37506f6SBram Moolenaar hi def link javaE_JavaLang javaE_Java 828ada17c4SBram Moolenaar syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException 838ada17c4SBram Moolenaar syn cluster javaTop add=javaX_JavaLang 848ada17c4SBram Moolenaar syn cluster javaClasses add=javaX_JavaLang 85*f37506f6SBram Moolenaar hi def link javaX_JavaLang javaX_Java 868ada17c4SBram Moolenaar 87*f37506f6SBram Moolenaar hi def link javaR_Java javaR_ 88*f37506f6SBram Moolenaar hi def link javaC_Java javaC_ 89*f37506f6SBram Moolenaar hi def link javaE_Java javaE_ 90*f37506f6SBram Moolenaar hi def link javaX_Java javaX_ 91*f37506f6SBram Moolenaar hi def link javaX_ javaExceptions 92*f37506f6SBram Moolenaar hi def link javaR_ javaExceptions 93*f37506f6SBram Moolenaar hi def link javaE_ javaExceptions 94*f37506f6SBram Moolenaar hi def link javaC_ javaConstant 958ada17c4SBram Moolenaar 96071d4279SBram Moolenaar syn keyword javaLangObject clone equals finalize getClass hashCode 97071d4279SBram Moolenaar syn keyword javaLangObject notify notifyAll toString wait 98*f37506f6SBram Moolenaar hi def link javaLangObject javaConstant 998ada17c4SBram Moolenaar syn cluster javaTop add=javaLangObject 100071d4279SBram Moolenaarendif 101071d4279SBram Moolenaar 102071d4279SBram Moolenaarif filereadable(expand("<sfile>:p:h")."/javaid.vim") 103071d4279SBram Moolenaar source <sfile>:p:h/javaid.vim 104071d4279SBram Moolenaarendif 105071d4279SBram Moolenaar 106071d4279SBram Moolenaarif exists("java_space_errors") 107071d4279SBram Moolenaar if !exists("java_no_trail_space_error") 108071d4279SBram Moolenaar syn match javaSpaceError "\s\+$" 109071d4279SBram Moolenaar endif 110071d4279SBram Moolenaar if !exists("java_no_tab_space_error") 111071d4279SBram Moolenaar syn match javaSpaceError " \+\t"me=e-1 112071d4279SBram Moolenaar endif 113071d4279SBram Moolenaarendif 114071d4279SBram Moolenaar 115f3c2afb7SBram Moolenaarsyn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString 116071d4279SBram Moolenaarsyn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel 117071d4279SBram Moolenaarsyn keyword javaLabel default 118071d4279SBram Moolenaar 119b6b046b2SBram Moolenaar" highlighting C++ keywords as errors removed, too many people find it 120b6b046b2SBram Moolenaar" annoying. Was: if !exists("java_allow_cpp_keywords") 121071d4279SBram Moolenaar 122071d4279SBram Moolenaar" The following cluster contains all java groups except the contained ones 123a5792f58SBram Moolenaarsyn 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 124071d4279SBram Moolenaar 125071d4279SBram Moolenaar 126071d4279SBram Moolenaar" Comments 127071d4279SBram Moolenaarsyn keyword javaTodo contained TODO FIXME XXX 128071d4279SBram Moolenaarif exists("java_comment_strings") 129071d4279SBram Moolenaar syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell 130071d4279SBram Moolenaar syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell 131071d4279SBram Moolenaar syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar 132071d4279SBram Moolenaar syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar 133071d4279SBram Moolenaar syn match javaCommentCharacter contained "'[^\\]'" 134071d4279SBram Moolenaar syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber 135071d4279SBram Moolenaar syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber 136071d4279SBram Moolenaarendif 137071d4279SBram Moolenaarsyn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell 138071d4279SBram Moolenaarsyn match javaCommentStar contained "^\s*\*[^/]"me=e-1 139071d4279SBram Moolenaarsyn match javaCommentStar contained "^\s*\*$" 140071d4279SBram Moolenaarsyn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell 141*f37506f6SBram Moolenaarhi def link javaCommentString javaString 142*f37506f6SBram Moolenaarhi def link javaComment2String javaString 143*f37506f6SBram Moolenaarhi def link javaCommentCharacter javaCharacter 144071d4279SBram Moolenaar 145071d4279SBram Moolenaarsyn cluster javaTop add=javaComment,javaLineComment 146071d4279SBram Moolenaar 147071d4279SBram Moolenaarif !exists("java_ignore_javadoc") && main_syntax != 'jsp' 148071d4279SBram Moolenaar syntax case ignore 149071d4279SBram Moolenaar " syntax coloring for javadoc comments (HTML) 150071d4279SBram Moolenaar syntax include @javaHtml <sfile>:p:h/html.vim 151071d4279SBram Moolenaar unlet b:current_syntax 1525c73622aSBram Moolenaar " HTML enables spell checking for all text that is not in a syntax item. This 1535c73622aSBram Moolenaar " is wrong for Java (all identifiers would be spell-checked), so it's undone 1545c73622aSBram Moolenaar " here. 1555c73622aSBram Moolenaar syntax spell default 1565c73622aSBram Moolenaar 1578ada17c4SBram Moolenaar syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell 1588ada17c4SBram Moolenaar 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,javaDocSeeTag 159071d4279SBram Moolenaar 1600c5fa7d7SBram Moolenaar syn region javaDocTags contained start="{@\(code\|link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" 1618ada17c4SBram Moolenaar syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam 162071d4279SBram Moolenaar syn match javaDocParam contained "\s\S\+" 163071d4279SBram Moolenaar syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>" 1648ada17c4SBram Moolenaar syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam 1658ada17c4SBram Moolenaar syn match javaDocSeeTagParam contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend 166071d4279SBram Moolenaar syntax case match 167071d4279SBram Moolenaarendif 168071d4279SBram Moolenaar 169071d4279SBram Moolenaar" match the special comment /**/ 170071d4279SBram Moolenaarsyn match javaComment "/\*\*/" 171071d4279SBram Moolenaar 172071d4279SBram Moolenaar" Strings and constants 173071d4279SBram Moolenaarsyn match javaSpecialError contained "\\." 174071d4279SBram Moolenaarsyn match javaSpecialCharError contained "[^']" 17500a927d6SBram Moolenaarsyn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" 176071d4279SBram Moolenaarsyn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell 177071d4279SBram Moolenaar" next line disabled, it can cause a crash for a long line 178071d4279SBram Moolenaar"syn match javaStringError +"\([^"\\]\|\\.\)*$+ 179071d4279SBram Moolenaarsyn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError 180071d4279SBram Moolenaarsyn match javaCharacter "'\\''" contains=javaSpecialChar 181071d4279SBram Moolenaarsyn match javaCharacter "'[^\\]'" 182f3c2afb7SBram Moolenaarsyn match javaNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>" 183f3c2afb7SBram Moolenaarsyn match javaNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\=" 184f3c2afb7SBram Moolenaarsyn match javaNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>" 185f3c2afb7SBram Moolenaarsyn match javaNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>" 186071d4279SBram Moolenaar 187071d4279SBram Moolenaar" unicode characters 18800a927d6SBram Moolenaarsyn match javaSpecial "\\u\d\{4\}" 189071d4279SBram Moolenaar 190071d4279SBram Moolenaarsyn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError 191071d4279SBram Moolenaar 192071d4279SBram Moolenaarif exists("java_highlight_functions") 193071d4279SBram Moolenaar if java_highlight_functions == "indent" 194f3c2afb7SBram Moolenaar syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 195f3c2afb7SBram Moolenaar syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 196f3c2afb7SBram Moolenaar syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 197f3c2afb7SBram Moolenaar syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 198071d4279SBram Moolenaar else 199071d4279SBram Moolenaar " This line catches method declarations at any indentation>0, but it assumes 200071d4279SBram Moolenaar " two things: 201071d4279SBram Moolenaar " 1. class names are always capitalized (ie: Button) 202071d4279SBram Moolenaar " 2. method names are never capitalized (except constructors, of course) 203f3c2afb7SBram Moolenaar "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 204f3c2afb7SBram Moolenaar syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(<.*>\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*(+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses,javaAnnotation 205071d4279SBram Moolenaar endif 206f3c2afb7SBram Moolenaar syn match javaLambdaDef "[a-zA-Z_][a-zA-Z0-9_]*\s*->" 207071d4279SBram Moolenaar syn match javaBraces "[{}]" 208f3c2afb7SBram Moolenaar syn cluster javaTop add=javaFuncDef,javaBraces,javaLambdaDef 209071d4279SBram Moolenaarendif 210071d4279SBram Moolenaar 211071d4279SBram Moolenaarif exists("java_highlight_debug") 212071d4279SBram Moolenaar 213071d4279SBram Moolenaar " Strings and constants 214071d4279SBram Moolenaar syn match javaDebugSpecial contained "\\\d\d\d\|\\." 215071d4279SBram Moolenaar syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial 216071d4279SBram Moolenaar syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+ 217071d4279SBram Moolenaar syn match javaDebugCharacter contained "'[^\\]'" 218071d4279SBram Moolenaar syn match javaDebugSpecialCharacter contained "'\\.'" 219071d4279SBram Moolenaar syn match javaDebugSpecialCharacter contained "'\\''" 220071d4279SBram Moolenaar syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" 221071d4279SBram Moolenaar syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" 222071d4279SBram Moolenaar syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" 223071d4279SBram Moolenaar syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" 224071d4279SBram Moolenaar syn keyword javaDebugBoolean contained true false 225071d4279SBram Moolenaar syn keyword javaDebugType contained null this super 226071d4279SBram Moolenaar syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen 227071d4279SBram Moolenaar 228071d4279SBram Moolenaar " to make this work you must define the highlighting for these groups 229071d4279SBram Moolenaar syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 230293ee4d4SBram Moolenaar syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 231071d4279SBram Moolenaar syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 232071d4279SBram Moolenaar syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 233071d4279SBram Moolenaar 234071d4279SBram Moolenaar syn cluster javaTop add=javaDebug 235071d4279SBram Moolenaar 236*f37506f6SBram Moolenaar hi def link javaDebug Debug 237*f37506f6SBram Moolenaar hi def link javaDebugString DebugString 238*f37506f6SBram Moolenaar hi def link javaDebugStringError javaError 239*f37506f6SBram Moolenaar hi def link javaDebugType DebugType 240*f37506f6SBram Moolenaar hi def link javaDebugBoolean DebugBoolean 241*f37506f6SBram Moolenaar hi def link javaDebugNumber Debug 242*f37506f6SBram Moolenaar hi def link javaDebugSpecial DebugSpecial 243*f37506f6SBram Moolenaar hi def link javaDebugSpecialCharacter DebugSpecial 244*f37506f6SBram Moolenaar hi def link javaDebugCharacter DebugString 245*f37506f6SBram Moolenaar hi def link javaDebugParen Debug 246071d4279SBram Moolenaar 247*f37506f6SBram Moolenaar hi def link DebugString String 248*f37506f6SBram Moolenaar hi def link DebugSpecial Special 249*f37506f6SBram Moolenaar hi def link DebugBoolean Boolean 250*f37506f6SBram Moolenaar hi def link DebugType Type 251071d4279SBram Moolenaarendif 252071d4279SBram Moolenaar 253071d4279SBram Moolenaarif exists("java_mark_braces_in_parens_as_errors") 254071d4279SBram Moolenaar syn match javaInParen contained "[{}]" 255*f37506f6SBram Moolenaar hi def link javaInParen javaError 256071d4279SBram Moolenaar syn cluster javaTop add=javaInParen 257071d4279SBram Moolenaarendif 258071d4279SBram Moolenaar 259071d4279SBram Moolenaar" catch errors caused by wrong parenthesis 260071d4279SBram Moolenaarsyn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1 261071d4279SBram Moolenaarsyn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained 262071d4279SBram Moolenaarsyn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained 263071d4279SBram Moolenaarsyn match javaParenError ")" 264293ee4d4SBram Moolenaar" catch errors caused by wrong square parenthesis 265293ee4d4SBram Moolenaarsyn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1 266293ee4d4SBram Moolenaarsyn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained 267293ee4d4SBram Moolenaarsyn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained 268293ee4d4SBram Moolenaarsyn match javaParenError "\]" 269293ee4d4SBram Moolenaar 270*f37506f6SBram Moolenaarhi def link javaParenError javaError 271071d4279SBram Moolenaar 272f3c2afb7SBram Moolenaarif exists("java_highlight_functions") 273f3c2afb7SBram Moolenaar syn match javaLambdaDef "([a-zA-Z0-9_<>\[\], \t]*)\s*->" 274f3c2afb7SBram Moolenaar " needs to be defined after the parenthesis error catcher to work 275f3c2afb7SBram Moolenaarendif 276f3c2afb7SBram Moolenaar 277071d4279SBram Moolenaarif !exists("java_minlines") 278071d4279SBram Moolenaar let java_minlines = 10 279071d4279SBram Moolenaarendif 280071d4279SBram Moolenaarexec "syn sync ccomment javaComment minlines=" . java_minlines 281071d4279SBram Moolenaar 282071d4279SBram Moolenaar" The default highlighting. 283*f37506f6SBram Moolenaarhi def link javaLambdaDef Function 284*f37506f6SBram Moolenaarhi def link javaFuncDef Function 285*f37506f6SBram Moolenaarhi def link javaVarArg Function 286*f37506f6SBram Moolenaarhi def link javaBraces Function 287*f37506f6SBram Moolenaarhi def link javaBranch Conditional 288*f37506f6SBram Moolenaarhi def link javaUserLabelRef javaUserLabel 289*f37506f6SBram Moolenaarhi def link javaLabel Label 290*f37506f6SBram Moolenaarhi def link javaUserLabel Label 291*f37506f6SBram Moolenaarhi def link javaConditional Conditional 292*f37506f6SBram Moolenaarhi def link javaRepeat Repeat 293*f37506f6SBram Moolenaarhi def link javaExceptions Exception 294*f37506f6SBram Moolenaarhi def link javaAssert Statement 295*f37506f6SBram Moolenaarhi def link javaStorageClass StorageClass 296*f37506f6SBram Moolenaarhi def link javaMethodDecl javaStorageClass 297*f37506f6SBram Moolenaarhi def link javaClassDecl javaStorageClass 298*f37506f6SBram Moolenaarhi def link javaScopeDecl javaStorageClass 299*f37506f6SBram Moolenaarhi def link javaBoolean Boolean 300*f37506f6SBram Moolenaarhi def link javaSpecial Special 301*f37506f6SBram Moolenaarhi def link javaSpecialError Error 302*f37506f6SBram Moolenaarhi def link javaSpecialCharError Error 303*f37506f6SBram Moolenaarhi def link javaString String 304*f37506f6SBram Moolenaarhi def link javaCharacter Character 305*f37506f6SBram Moolenaarhi def link javaSpecialChar SpecialChar 306*f37506f6SBram Moolenaarhi def link javaNumber Number 307*f37506f6SBram Moolenaarhi def link javaError Error 308*f37506f6SBram Moolenaarhi def link javaStringError Error 309*f37506f6SBram Moolenaarhi def link javaStatement Statement 310*f37506f6SBram Moolenaarhi def link javaOperator Operator 311*f37506f6SBram Moolenaarhi def link javaComment Comment 312*f37506f6SBram Moolenaarhi def link javaDocComment Comment 313*f37506f6SBram Moolenaarhi def link javaLineComment Comment 314*f37506f6SBram Moolenaarhi def link javaConstant Constant 315*f37506f6SBram Moolenaarhi def link javaTypedef Typedef 316*f37506f6SBram Moolenaarhi def link javaTodo Todo 317*f37506f6SBram Moolenaarhi def link javaAnnotation PreProc 318071d4279SBram Moolenaar 319*f37506f6SBram Moolenaarhi def link javaCommentTitle SpecialComment 320*f37506f6SBram Moolenaarhi def link javaDocTags Special 321*f37506f6SBram Moolenaarhi def link javaDocParam Function 322*f37506f6SBram Moolenaarhi def link javaDocSeeTagParam Function 323*f37506f6SBram Moolenaarhi def link javaCommentStar javaComment 324071d4279SBram Moolenaar 325*f37506f6SBram Moolenaarhi def link javaType Type 326*f37506f6SBram Moolenaarhi def link javaExternal Include 327071d4279SBram Moolenaar 328*f37506f6SBram Moolenaarhi def link htmlComment Special 329*f37506f6SBram Moolenaarhi def link htmlCommentPart Special 330*f37506f6SBram Moolenaarhi def link javaSpaceError Error 331071d4279SBram Moolenaar 332071d4279SBram Moolenaarlet b:current_syntax = "java" 333071d4279SBram Moolenaar 334071d4279SBram Moolenaarif main_syntax == 'java' 335071d4279SBram Moolenaar unlet main_syntax 336071d4279SBram Moolenaarendif 337071d4279SBram Moolenaar 338071d4279SBram Moolenaarlet b:spell_options="contained" 3390c5fa7d7SBram Moolenaarlet &cpo = s:cpo_save 3400c5fa7d7SBram Moolenaarunlet s:cpo_save 341071d4279SBram Moolenaar 342071d4279SBram Moolenaar" vim: ts=8 343