forked from aniani/vim
		
	
		
			
				
	
	
		
			342 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			342 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:     Java
 | |
| " Maintainer:   Claudio Fleiner <claudio@fleiner.com>
 | |
| " URL:		http://www.fleiner.com/vim/syntax/java.vim
 | |
| " Last Change:  2004 Nov 12
 | |
| 
 | |
| " Please check :help java.vim for comments on some of the options available.
 | |
| 
 | |
| " Quit when a syntax file was already loaded
 | |
| if !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 files
 | |
| if 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.vim
 | |
| syn match   javaError2 "#\|=<"
 | |
| JavaHiLink javaError2 javaError
 | |
| 
 | |
| 
 | |
| 
 | |
| " keyword definitions
 | |
| syn keyword javaExternal	native package
 | |
| syn match javaExternal          "\<import\>\(\s\+static\>\)\?"
 | |
| syn keyword javaError		goto const
 | |
| syn keyword javaConditional	if else switch
 | |
| syn keyword javaRepeat		while for do
 | |
| syn keyword javaBoolean		true false
 | |
| syn keyword javaConstant	null
 | |
| syn keyword javaTypedef		this super
 | |
| syn keyword javaOperator	new instanceof
 | |
| syn keyword javaType		boolean char byte short int long float double
 | |
| syn keyword javaType		void
 | |
| syn keyword javaStatement	return
 | |
| syn keyword javaStorageClass	static synchronized transient volatile final strictfp serializable
 | |
| syn keyword javaExceptions	throw try catch finally
 | |
| syn keyword javaAssert		assert
 | |
| syn keyword javaMethodDecl	synchronized throws
 | |
| syn keyword javaClassDecl	extends implements interface
 | |
| " to differentiate the keyword class from MyClass.class we use a match here
 | |
| syn match   javaTypedef		"\.\s*\<class\>"ms=s+1
 | |
| syn keyword javaClassDecl	enum
 | |
| syn match   javaClassDecl	"^class\>"
 | |
| syn match   javaClassDecl	"[^.]\s*\<class\>"ms=s+1
 | |
| syn keyword javaBranch		break continue nextgroup=javaUserLabelRef skipwhite
 | |
| syn match   javaUserLabelRef	"\k\+" contained
 | |
| syn keyword javaScopeDecl	public protected private abstract
 | |
| 
 | |
| if exists("java_highlight_java_lang_ids") || exists("java_highlight_java_lang") || exists("java_highlight_all")
 | |
|   " java.lang.*
 | |
|   syn match javaLangClass "\<System\>"
 | |
|   syn keyword javaLangClass  Cloneable Comparable Runnable Boolean Byte Class
 | |
|   syn keyword javaLangClass  Character CharSequence ClassLoader Compiler Double Float
 | |
|   syn keyword javaLangClass  Integer InheritableThreadLocal Long Math Number Object Package Process
 | |
|   syn keyword javaLangClass  Runtime RuntimePermission InheritableThreadLocal
 | |
|   syn keyword javaLangClass  SecurityManager Short String StrictMath StackTraceElement
 | |
|   syn keyword javaLangClass  StringBuffer Thread ThreadGroup
 | |
|   syn keyword javaLangClass  ThreadLocal Throwable Void ArithmeticException
 | |
|   syn keyword javaLangClass  ArrayIndexOutOfBoundsException AssertionError
 | |
|   syn keyword javaLangClass  ArrayStoreException ClassCastException
 | |
|   syn keyword javaLangClass  ClassNotFoundException
 | |
|   syn keyword javaLangClass  CloneNotSupportedException Exception
 | |
|   syn keyword javaLangClass  IllegalAccessException
 | |
|   syn keyword javaLangClass  IllegalArgumentException
 | |
|   syn keyword javaLangClass  IllegalMonitorStateException
 | |
|   syn keyword javaLangClass  IllegalStateException
 | |
|   syn keyword javaLangClass  IllegalThreadStateException
 | |
|   syn keyword javaLangClass  IndexOutOfBoundsException
 | |
|   syn keyword javaLangClass  InstantiationException InterruptedException
 | |
|   syn keyword javaLangClass  NegativeArraySizeException NoSuchFieldException
 | |
|   syn keyword javaLangClass  NoSuchMethodException NullPointerException
 | |
|   syn keyword javaLangClass  NumberFormatException RuntimeException
 | |
|   syn keyword javaLangClass  SecurityException StringIndexOutOfBoundsException
 | |
|   syn keyword javaLangClass  UnsupportedOperationException
 | |
|   syn keyword javaLangClass  AbstractMethodError ClassCircularityError
 | |
|   syn keyword javaLangClass  ClassFormatError Error ExceptionInInitializerError
 | |
|   syn keyword javaLangClass  IllegalAccessError InstantiationError
 | |
|   syn keyword javaLangClass  IncompatibleClassChangeError InternalError
 | |
|   syn keyword javaLangClass  LinkageError NoClassDefFoundError
 | |
|   syn keyword javaLangClass  NoSuchFieldError NoSuchMethodError
 | |
|   syn keyword javaLangClass  OutOfMemoryError StackOverflowError
 | |
|   syn keyword javaLangClass  ThreadDeath UnknownError UnsatisfiedLinkError
 | |
|   syn keyword javaLangClass  UnsupportedClassVersionError VerifyError
 | |
|   syn keyword javaLangClass  VirtualMachineError
 | |
|   syn keyword javaLangObject clone equals finalize getClass hashCode
 | |
|   syn keyword javaLangObject notify notifyAll toString wait
 | |
|   JavaHiLink javaLangClass		     javaConstant
 | |
|   JavaHiLink javaLangObject		     javaConstant
 | |
|   syn cluster javaTop add=javaLangObject,javaLangClass
 | |
|   syn cluster javaClasses add=javaLangClass
 | |
| endif
 | |
| 
 | |
| if filereadable(expand("<sfile>:p:h")."/javaid.vim")
 | |
|   source <sfile>:p:h/javaid.vim
 | |
| endif
 | |
| 
 | |
| 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
 | |
|   endif
 | |
| endif
 | |
| 
 | |
| syn region  javaLabelRegion     transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
 | |
| syn match   javaUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
 | |
| syn 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 operator
 | |
| endif
 | |
| 
 | |
| " The following cluster contains all java groups except the contained ones
 | |
| syn 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
 | |
| 
 | |
| 
 | |
| " Comments
 | |
| syn keyword javaTodo		 contained TODO FIXME XXX
 | |
| if 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,javaNumber
 | |
| endif
 | |
| syn region  javaComment		 start="/\*"  end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
 | |
| syn match   javaCommentStar      contained "^\s*\*[^/]"me=e-1
 | |
| syn match   javaCommentStar      contained "^\s*\*$"
 | |
| syn match   javaLineComment      "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
 | |
| JavaHiLink javaCommentString javaString
 | |
| JavaHiLink javaComment2String javaString
 | |
| JavaHiLink 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,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
 | |
| 
 | |
|   syn region javaDocTags  contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
 | |
|   syn match  javaDocTags  contained "@\(see\|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\)\>"
 | |
|   syntax case match
 | |
| endif
 | |
| 
 | |
| " match the special comment /**/
 | |
| syn match   javaComment		 "/\*\*/"
 | |
| 
 | |
| " Strings and constants
 | |
| syn 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,javaSpecialCharError
 | |
| syn match   javaCharacter	 "'\\''" contains=javaSpecialChar
 | |
| syn 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 characters
 | |
| syn 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,javaBraces
 | |
| endif
 | |
| 
 | |
| 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
 | |
|   endif
 | |
| endif
 | |
| 
 | |
| if exists("java_mark_braces_in_parens_as_errors")
 | |
|   syn match javaInParen		 contained "[{}]"
 | |
|   JavaHiLink javaInParen	javaError
 | |
|   syn cluster javaTop add=javaInParen
 | |
| endif
 | |
| 
 | |
| " catch errors caused by wrong parenthesis
 | |
| syn region  javaParenT  transparent matchgroup=javaParen  start="("  end=")" contains=@javaTop,javaParenT1
 | |
| syn region  javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
 | |
| syn region  javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT  contained
 | |
| syn match   javaParenError       ")"
 | |
| " catch errors caused by wrong square parenthesis
 | |
| syn region  javaParenT  transparent matchgroup=javaParen  start="\["  end="\]" contains=@javaTop,javaParenT1
 | |
| syn region  javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
 | |
| syn region  javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT  contained
 | |
| syn match   javaParenError       "\]"
 | |
| 
 | |
| JavaHiLink javaParenError       javaError
 | |
| 
 | |
| if !exists("java_minlines")
 | |
|   let java_minlines = 10
 | |
| endif
 | |
| exec "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 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 javaCommentTitle		SpecialComment
 | |
|   JavaHiLink javaDocTags		Special
 | |
|   JavaHiLink javaDocParam		Function
 | |
|   JavaHiLink javaCommentStar		javaComment
 | |
| 
 | |
|   JavaHiLink javaType			Type
 | |
|   JavaHiLink javaExternal		Include
 | |
| 
 | |
|   JavaHiLink htmlComment		Special
 | |
|   JavaHiLink htmlCommentPart		Special
 | |
|   JavaHiLink javaSpaceError		Error
 | |
| endif
 | |
| 
 | |
| delcommand JavaHiLink
 | |
| 
 | |
| let b:current_syntax = "java"
 | |
| 
 | |
| if main_syntax == 'java'
 | |
|   unlet main_syntax
 | |
| endif
 | |
| 
 | |
| let b:spell_options="contained"
 | |
| 
 | |
| " vim: ts=8
 |