java.vim 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. " Vim syntax file
  2. " Language: Java
  3. " Maintainer: Claudio Fleiner <claudio@fleiner.com>
  4. " URL: http://www.fleiner.com/vim/syntax/java.vim
  5. " Last Change: 2005 Nov 12
  6. " Please check :help java.vim for comments on some of the options available.
  7. " Quit when a syntax file was already loaded
  8. if !exists("main_syntax")
  9. if version < 600
  10. syntax clear
  11. elseif exists("b:current_syntax")
  12. finish
  13. endif
  14. " we define it here so that included files can test for it
  15. let main_syntax='java'
  16. endif
  17. " don't use standard HiLink, it will not work with included syntax files
  18. if version < 508
  19. command! -nargs=+ JavaHiLink hi link <args>
  20. else
  21. command! -nargs=+ JavaHiLink hi def link <args>
  22. endif
  23. " some characters that cannot be in a java program (outside a string)
  24. syn match javaError "[\\@`]"
  25. syn match javaError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
  26. syn match javaOK "\.\.\."
  27. " use separate name so that it can be deleted in javacc.vim
  28. syn match javaError2 "#\|=<"
  29. JavaHiLink javaError2 javaError
  30. " keyword definitions
  31. syn keyword javaExternal native package
  32. syn match javaExternal "\<import\>\(\s\+static\>\)\?"
  33. syn keyword javaError goto const
  34. syn keyword javaConditional if else switch
  35. syn keyword javaRepeat while for do
  36. syn keyword javaBoolean true false
  37. syn keyword javaConstant null
  38. syn keyword javaTypedef this super
  39. syn keyword javaOperator new instanceof
  40. syn keyword javaType boolean char byte short int long float double
  41. syn keyword javaType void
  42. syn keyword javaStatement return
  43. syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable
  44. syn keyword javaExceptions throw try catch finally
  45. syn keyword javaAssert assert
  46. syn keyword javaMethodDecl synchronized throws
  47. syn keyword javaClassDecl extends implements interface
  48. " to differentiate the keyword class from MyClass.class we use a match here
  49. syn match javaTypedef "\.\s*\<class\>"ms=s+1
  50. syn keyword javaClassDecl enum
  51. syn match javaClassDecl "^class\>"
  52. syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1
  53. syn match javaAnnotation "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>"
  54. syn match javaClassDecl "@interface\>"
  55. syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
  56. syn match javaUserLabelRef "\k\+" contained
  57. syn match javaVarArg "\.\.\."
  58. syn keyword javaScopeDecl public protected private abstract
  59. if exists("java_highlight_java_lang_ids")
  60. let java_highlight_all=1
  61. endif
  62. if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang")
  63. " java.lang.*
  64. syn match javaLangClass "\<System\>"
  65. syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException
  66. syn cluster javaTop add=javaR_JavaLang
  67. syn cluster javaClasses add=javaR_JavaLang
  68. JavaHiLink javaR_JavaLang javaR_Java
  69. 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
  70. syn cluster javaTop add=javaC_JavaLang
  71. syn cluster javaClasses add=javaC_JavaLang
  72. JavaHiLink javaC_JavaLang javaC_Java
  73. 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
  74. syn cluster javaTop add=javaE_JavaLang
  75. syn cluster javaClasses add=javaE_JavaLang
  76. JavaHiLink javaE_JavaLang javaE_Java
  77. syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException
  78. syn cluster javaTop add=javaX_JavaLang
  79. syn cluster javaClasses add=javaX_JavaLang
  80. JavaHiLink javaX_JavaLang javaX_Java
  81. JavaHiLink javaR_Java javaR_
  82. JavaHiLink javaC_Java javaC_
  83. JavaHiLink javaE_Java javaE_
  84. JavaHiLink javaX_Java javaX_
  85. JavaHiLink javaX_ javaExceptions
  86. JavaHiLink javaR_ javaExceptions
  87. JavaHiLink javaE_ javaExceptions
  88. JavaHiLink javaC_ javaConstant
  89. syn keyword javaLangObject clone equals finalize getClass hashCode
  90. syn keyword javaLangObject notify notifyAll toString wait
  91. JavaHiLink javaLangObject javaConstant
  92. syn cluster javaTop add=javaLangObject
  93. endif
  94. if filereadable(expand("<sfile>:p:h")."/javaid.vim")
  95. source <sfile>:p:h/javaid.vim
  96. endif
  97. if exists("java_space_errors")
  98. if !exists("java_no_trail_space_error")
  99. syn match javaSpaceError "\s\+$"
  100. endif
  101. if !exists("java_no_tab_space_error")
  102. syn match javaSpaceError " \+\t"me=e-1
  103. endif
  104. endif
  105. syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
  106. syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
  107. syn keyword javaLabel default
  108. if !exists("java_allow_cpp_keywords")
  109. syn keyword javaError auto delete extern friend inline redeclared
  110. syn keyword javaError register signed sizeof struct template typedef union
  111. syn keyword javaError unsigned operator
  112. endif
  113. " The following cluster contains all java groups except the contained ones
  114. 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,javaAnnotation,javaVarArg
  115. " Comments
  116. syn keyword javaTodo contained TODO FIXME XXX
  117. if exists("java_comment_strings")
  118. syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
  119. syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
  120. syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
  121. syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar
  122. syn match javaCommentCharacter contained "'[^\\]'"
  123. syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
  124. syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
  125. endif
  126. syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
  127. syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
  128. syn match javaCommentStar contained "^\s*\*$"
  129. syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
  130. JavaHiLink javaCommentString javaString
  131. JavaHiLink javaComment2String javaString
  132. JavaHiLink javaCommentCharacter javaCharacter
  133. syn cluster javaTop add=javaComment,javaLineComment
  134. if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
  135. syntax case ignore
  136. " syntax coloring for javadoc comments (HTML)
  137. syntax include @javaHtml <sfile>:p:h/html.vim
  138. unlet b:current_syntax
  139. syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaTodo,@Spell
  140. 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
  141. syn region javaDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
  142. syn match javaDocTags contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
  143. syn match javaDocParam contained "\s\S\+"
  144. syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
  145. syntax case match
  146. endif
  147. " match the special comment /**/
  148. syn match javaComment "/\*\*/"
  149. " Strings and constants
  150. syn match javaSpecialError contained "\\."
  151. syn match javaSpecialCharError contained "[^']"
  152. syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
  153. syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
  154. " next line disabled, it can cause a crash for a long line
  155. "syn match javaStringError +"\([^"\\]\|\\.\)*$+
  156. syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
  157. syn match javaCharacter "'\\''" contains=javaSpecialChar
  158. syn match javaCharacter "'[^\\]'"
  159. syn match javaNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
  160. syn match javaNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
  161. syn match javaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
  162. syn match javaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
  163. " unicode characters
  164. syn match javaSpecial "\\u\d\{4\}"
  165. syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
  166. if exists("java_highlight_functions")
  167. if java_highlight_functions == "indent"
  168. syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
  169. syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
  170. syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
  171. syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
  172. else
  173. " This line catches method declarations at any indentation>0, but it assumes
  174. " two things:
  175. " 1. class names are always capitalized (ie: Button)
  176. " 2. method names are never capitalized (except constructors, of course)
  177. 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
  178. endif
  179. syn match javaBraces "[{}]"
  180. syn cluster javaTop add=javaFuncDef,javaBraces
  181. endif
  182. if exists("java_highlight_debug")
  183. " Strings and constants
  184. syn match javaDebugSpecial contained "\\\d\d\d\|\\."
  185. syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
  186. syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
  187. syn match javaDebugCharacter contained "'[^\\]'"
  188. syn match javaDebugSpecialCharacter contained "'\\.'"
  189. syn match javaDebugSpecialCharacter contained "'\\''"
  190. syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
  191. syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
  192. syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
  193. syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
  194. syn keyword javaDebugBoolean contained true false
  195. syn keyword javaDebugType contained null this super
  196. syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
  197. " to make this work you must define the highlighting for these groups
  198. syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
  199. syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
  200. syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
  201. syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
  202. syn cluster javaTop add=javaDebug
  203. if version >= 508 || !exists("did_c_syn_inits")
  204. JavaHiLink javaDebug Debug
  205. JavaHiLink javaDebugString DebugString
  206. JavaHiLink javaDebugStringError javaError
  207. JavaHiLink javaDebugType DebugType
  208. JavaHiLink javaDebugBoolean DebugBoolean
  209. JavaHiLink javaDebugNumber Debug
  210. JavaHiLink javaDebugSpecial DebugSpecial
  211. JavaHiLink javaDebugSpecialCharacter DebugSpecial
  212. JavaHiLink javaDebugCharacter DebugString
  213. JavaHiLink javaDebugParen Debug
  214. JavaHiLink DebugString String
  215. JavaHiLink DebugSpecial Special
  216. JavaHiLink DebugBoolean Boolean
  217. JavaHiLink DebugType Type
  218. endif
  219. endif
  220. if exists("java_mark_braces_in_parens_as_errors")
  221. syn match javaInParen contained "[{}]"
  222. JavaHiLink javaInParen javaError
  223. syn cluster javaTop add=javaInParen
  224. endif
  225. " catch errors caused by wrong parenthesis
  226. syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1
  227. syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
  228. syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained
  229. syn match javaParenError ")"
  230. " catch errors caused by wrong square parenthesis
  231. syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
  232. syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
  233. syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained
  234. syn match javaParenError "\]"
  235. JavaHiLink javaParenError javaError
  236. if !exists("java_minlines")
  237. let java_minlines = 10
  238. endif
  239. exec "syn sync ccomment javaComment minlines=" . java_minlines
  240. " The default highlighting.
  241. if version >= 508 || !exists("did_java_syn_inits")
  242. if version < 508
  243. let did_java_syn_inits = 1
  244. endif
  245. JavaHiLink javaFuncDef Function
  246. JavaHiLink javaVarArg Function
  247. JavaHiLink javaBraces Function
  248. JavaHiLink javaBranch Conditional
  249. JavaHiLink javaUserLabelRef javaUserLabel
  250. JavaHiLink javaLabel Label
  251. JavaHiLink javaUserLabel Label
  252. JavaHiLink javaConditional Conditional
  253. JavaHiLink javaRepeat Repeat
  254. JavaHiLink javaExceptions Exception
  255. JavaHiLink javaAssert Statement
  256. JavaHiLink javaStorageClass StorageClass
  257. JavaHiLink javaMethodDecl javaStorageClass
  258. JavaHiLink javaClassDecl javaStorageClass
  259. JavaHiLink javaScopeDecl javaStorageClass
  260. JavaHiLink javaBoolean Boolean
  261. JavaHiLink javaSpecial Special
  262. JavaHiLink javaSpecialError Error
  263. JavaHiLink javaSpecialCharError Error
  264. JavaHiLink javaString String
  265. JavaHiLink javaCharacter Character
  266. JavaHiLink javaSpecialChar SpecialChar
  267. JavaHiLink javaNumber Number
  268. JavaHiLink javaError Error
  269. JavaHiLink javaStringError Error
  270. JavaHiLink javaStatement Statement
  271. JavaHiLink javaOperator Operator
  272. JavaHiLink javaComment Comment
  273. JavaHiLink javaDocComment Comment
  274. JavaHiLink javaLineComment Comment
  275. JavaHiLink javaConstant Constant
  276. JavaHiLink javaTypedef Typedef
  277. JavaHiLink javaTodo Todo
  278. JavaHiLink javaAnnotation PreProc
  279. JavaHiLink javaCommentTitle SpecialComment
  280. JavaHiLink javaDocTags Special
  281. JavaHiLink javaDocParam Function
  282. JavaHiLink javaCommentStar javaComment
  283. JavaHiLink javaType Type
  284. JavaHiLink javaExternal Include
  285. JavaHiLink htmlComment Special
  286. JavaHiLink htmlCommentPart Special
  287. JavaHiLink javaSpaceError Error
  288. endif
  289. delcommand JavaHiLink
  290. let b:current_syntax = "java"
  291. if main_syntax == 'java'
  292. unlet main_syntax
  293. endif
  294. let b:spell_options="contained"
  295. " vim: ts=8