343 lines · 17.0 KB · Text
RawDownload
" Vim syntax file" Language:     Java" Maintainer:   Claudio Fleiner <claudio@fleiner.com>" URL:		http://www.fleiner.com/vim/syntax/java.vim" Last Change:  2006 Apr 30 " Please check :help java.vim for comments on some of the options available. " Quit when a syntax file was already loadedif !exists("main_syntax")  if version < 600    syntax clear  elseif exists("b:current_syntax")    finish  endif  " we define it here so that included files can test for it  let main_syntax='java'endif " don't use standard HiLink, it will not work with included syntax filesif version < 508  command! -nargs=+ JavaHiLink hi link <args>else  command! -nargs=+ JavaHiLink hi def link <args>endif " some characters that cannot be in a java program (outside a string)syn match javaError "[\\@`]"syn match javaError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"syn match javaOK "\.\.\." " use separate name so that it can be deleted in javacc.vimsyn match   javaError2 "#\|=<"JavaHiLink javaError2 javaError   " keyword definitionssyn keyword javaExternal	native packagesyn match javaExternal		"\<import\>\(\s\+static\>\)\?"syn keyword javaError		goto constsyn keyword javaConditional	if else switchsyn keyword javaRepeat		while for dosyn keyword javaBoolean		true falsesyn keyword javaConstant	nullsyn keyword javaTypedef		this supersyn keyword javaOperator	new instanceofsyn keyword javaType		boolean char byte short int long float doublesyn keyword javaType		voidsyn keyword javaStatement	returnsyn keyword javaStorageClass	static synchronized transient volatile final strictfp serializablesyn keyword javaExceptions	throw try catch finallysyn keyword javaAssert		assertsyn keyword javaMethodDecl	synchronized throwssyn keyword javaClassDecl	extends implements interface" to differentiate the keyword class from MyClass.class we use a match heresyn match   javaTypedef		"\.\s*\<class\>"ms=s+1syn keyword javaClassDecl	enumsyn match   javaClassDecl	"^class\>"syn match   javaClassDecl	"[^.]\s*\<class\>"ms=s+1syn match   javaAnnotation      "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>"syn match   javaClassDecl       "@interface\>"syn keyword javaBranch		break continue nextgroup=javaUserLabelRef skipwhitesyn match   javaUserLabelRef	"\k\+" containedsyn match   javaVarArg		"\.\.\."syn keyword javaScopeDecl	public protected private abstract if exists("java_highlight_java_lang_ids")  let java_highlight_all=1endifif exists("java_highlight_all")  || exists("java_highlight_java")  || exists("java_highlight_java_lang")  " java.lang.*  syn match javaLangClass "\<System\>"  syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException  syn cluster javaTop add=javaR_JavaLang  syn cluster javaClasses add=javaR_JavaLang  JavaHiLink javaR_JavaLang javaR_Java  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  syn cluster javaTop add=javaC_JavaLang  syn cluster javaClasses add=javaC_JavaLang  JavaHiLink javaC_JavaLang javaC_Java  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  syn cluster javaTop add=javaE_JavaLang  syn cluster javaClasses add=javaE_JavaLang  JavaHiLink javaE_JavaLang javaE_Java  syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException  syn cluster javaTop add=javaX_JavaLang  syn cluster javaClasses add=javaX_JavaLang  JavaHiLink javaX_JavaLang javaX_Java   JavaHiLink javaR_Java javaR_  JavaHiLink javaC_Java javaC_  JavaHiLink javaE_Java javaE_  JavaHiLink javaX_Java javaX_  JavaHiLink javaX_		     javaExceptions  JavaHiLink javaR_		     javaExceptions  JavaHiLink javaE_		     javaExceptions  JavaHiLink javaC_		     javaConstant   syn keyword javaLangObject clone equals finalize getClass hashCode  syn keyword javaLangObject notify notifyAll toString wait  JavaHiLink javaLangObject		     javaConstant  syn cluster javaTop add=javaLangObjectendif if filereadable(expand("<sfile>:p:h")."/javaid.vim")  source <sfile>:p:h/javaid.vimendif if exists("java_space_errors")  if !exists("java_no_trail_space_error")    syn match   javaSpaceError  "\s\+$"  endif  if !exists("java_no_tab_space_error")    syn match   javaSpaceError  " \+\t"me=e-1  endifendif syn region  javaLabelRegion     transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharactersyn match   javaUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabelsyn keyword javaLabel		default if !exists("java_allow_cpp_keywords")  syn keyword javaError auto delete extern friend inline redeclared  syn keyword javaError register signed sizeof struct template typedef union  syn keyword javaError unsigned operatorendif " The following cluster contains all java groups except the contained onessyn 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  " Commentssyn keyword javaTodo		 contained TODO FIXME XXXif exists("java_comment_strings")  syn region  javaCommentString    contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell  syn region  javaComment2String   contained start=+"+  end=+$\|"+  contains=javaSpecial,javaSpecialChar,@Spell  syn match   javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar  syn match   javaCommentCharacter contained "'\\''" contains=javaSpecialChar  syn match   javaCommentCharacter contained "'[^\\]'"  syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber  syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumberendifsyn region  javaComment		 start="/\*"  end="\*/" contains=@javaCommentSpecial,javaTodo,@Spellsyn match   javaCommentStar      contained "^\s*\*[^/]"me=e-1syn match   javaCommentStar      contained "^\s*\*$"syn match   javaLineComment      "//.*" contains=@javaCommentSpecial2,javaTodo,@SpellJavaHiLink javaCommentString javaStringJavaHiLink javaComment2String javaStringJavaHiLink javaCommentCharacter javaCharacter syn cluster javaTop add=javaComment,javaLineComment if !exists("java_ignore_javadoc") && main_syntax != 'jsp'  syntax case ignore  " syntax coloring for javadoc comments (HTML)  syntax include @javaHtml <sfile>:p:h/html.vim  unlet b:current_syntax  syn region  javaDocComment    start="/\*\*"  end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell  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   syn region javaDocTags         contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"  syn match  javaDocTags         contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam  syn match  javaDocParam        contained "\s\S\+"  syn match  javaDocTags         contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"  syn region javaDocSeeTag       contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam  syn match  javaDocSeeTagParam  contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend  syntax case matchendif " match the special comment /**/syn match   javaComment		 "/\*\*/" " Strings and constantssyn match   javaSpecialError     contained "\\."syn match   javaSpecialCharError contained "[^']"syn match   javaSpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"syn region  javaString		start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell" next line disabled, it can cause a crash for a long line"syn match   javaStringError	  +"\([^"\\]\|\\.\)*$+syn match   javaCharacter	 "'[^']*'" contains=javaSpecialChar,javaSpecialCharErrorsyn match   javaCharacter	 "'\\''" contains=javaSpecialCharsyn match   javaCharacter	 "'[^\\]'"syn match   javaNumber		 "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"syn match   javaNumber		 "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="syn match   javaNumber		 "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"syn match   javaNumber		 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" " unicode characterssyn match   javaSpecial "\\u\d\{4\}" syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError if exists("java_highlight_functions")  if java_highlight_functions == "indent"    syn match  javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses    syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses    syn match  javaFuncDef "^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses    syn region javaFuncDef start=+^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses  else    " This line catches method declarations at any indentation>0, but it assumes    " two things:    "   1. class names are always capitalized (ie: Button)    "   2. method names are never capitalized (except constructors, of course)    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  endif  syn match  javaBraces  "[{}]"  syn cluster javaTop add=javaFuncDef,javaBracesendif if exists("java_highlight_debug")   " Strings and constants  syn match   javaDebugSpecial		contained "\\\d\d\d\|\\."  syn region  javaDebugString		contained start=+"+  end=+"+  contains=javaDebugSpecial  syn match   javaDebugStringError      +"\([^"\\]\|\\.\)*$+  syn match   javaDebugCharacter	contained "'[^\\]'"  syn match   javaDebugSpecialCharacter contained "'\\.'"  syn match   javaDebugSpecialCharacter contained "'\\''"  syn match   javaDebugNumber		contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"  syn match   javaDebugNumber		contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="  syn match   javaDebugNumber		contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"  syn match   javaDebugNumber		contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"  syn keyword javaDebugBoolean		contained true false  syn keyword javaDebugType		contained null this super  syn region javaDebugParen  start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen   " to make this work you must define the highlighting for these groups  syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen  syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen  syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen  syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen   syn cluster javaTop add=javaDebug   if version >= 508 || !exists("did_c_syn_inits")    JavaHiLink javaDebug		 Debug    JavaHiLink javaDebugString		 DebugString    JavaHiLink javaDebugStringError	 javaError    JavaHiLink javaDebugType		 DebugType    JavaHiLink javaDebugBoolean		 DebugBoolean    JavaHiLink javaDebugNumber		 Debug    JavaHiLink javaDebugSpecial		 DebugSpecial    JavaHiLink javaDebugSpecialCharacter DebugSpecial    JavaHiLink javaDebugCharacter	 DebugString    JavaHiLink javaDebugParen		 Debug     JavaHiLink DebugString		 String    JavaHiLink DebugSpecial		 Special    JavaHiLink DebugBoolean		 Boolean    JavaHiLink DebugType		 Type  endifendif if exists("java_mark_braces_in_parens_as_errors")  syn match javaInParen		 contained "[{}]"  JavaHiLink javaInParen	javaError  syn cluster javaTop add=javaInParenendif " catch errors caused by wrong parenthesissyn region  javaParenT  transparent matchgroup=javaParen  start="("  end=")" contains=@javaTop,javaParenT1syn region  javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 containedsyn region  javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT  containedsyn match   javaParenError       ")"" catch errors caused by wrong square parenthesissyn region  javaParenT  transparent matchgroup=javaParen  start="\["  end="\]" contains=@javaTop,javaParenT1syn region  javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 containedsyn region  javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT  containedsyn match   javaParenError       "\]" JavaHiLink javaParenError       javaError if !exists("java_minlines")  let java_minlines = 10endifexec "syn sync ccomment javaComment minlines=" . java_minlines " The default highlighting.if version >= 508 || !exists("did_java_syn_inits")  if version < 508    let did_java_syn_inits = 1  endif  JavaHiLink javaFuncDef		Function  JavaHiLink javaVarArg                 Function  JavaHiLink javaBraces			Function  JavaHiLink javaBranch			Conditional  JavaHiLink javaUserLabelRef		javaUserLabel  JavaHiLink javaLabel			Label  JavaHiLink javaUserLabel		Label  JavaHiLink javaConditional		Conditional  JavaHiLink javaRepeat			Repeat  JavaHiLink javaExceptions		Exception  JavaHiLink javaAssert			Statement  JavaHiLink javaStorageClass		StorageClass  JavaHiLink javaMethodDecl		javaStorageClass  JavaHiLink javaClassDecl		javaStorageClass  JavaHiLink javaScopeDecl		javaStorageClass  JavaHiLink javaBoolean		Boolean  JavaHiLink javaSpecial		Special  JavaHiLink javaSpecialError		Error  JavaHiLink javaSpecialCharError	Error  JavaHiLink javaString			String  JavaHiLink javaCharacter		Character  JavaHiLink javaSpecialChar		SpecialChar  JavaHiLink javaNumber			Number  JavaHiLink javaError			Error  JavaHiLink javaStringError		Error  JavaHiLink javaStatement		Statement  JavaHiLink javaOperator		Operator  JavaHiLink javaComment		Comment  JavaHiLink javaDocComment		Comment  JavaHiLink javaLineComment		Comment  JavaHiLink javaConstant		Constant  JavaHiLink javaTypedef		Typedef  JavaHiLink javaTodo			Todo  JavaHiLink javaAnnotation             PreProc   JavaHiLink javaCommentTitle		SpecialComment  JavaHiLink javaDocTags		Special  JavaHiLink javaDocParam		Function  JavaHiLink javaDocSeeTagParam		Function  JavaHiLink javaCommentStar		javaComment   JavaHiLink javaType			Type  JavaHiLink javaExternal		Include   JavaHiLink htmlComment		Special  JavaHiLink htmlCommentPart		Special  JavaHiLink javaSpaceError		Errorendif delcommand JavaHiLink let b:current_syntax = "java" if main_syntax == 'java'  unlet main_syntaxendif let b:spell_options="contained" " vim: ts=8