diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index a63ae02..bd867b2 100644
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -8,12 +8,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 !exists("g:main_syntax")
   if exists("b:current_syntax")
     finish
   endif
   " we define it here so that included files can test for it
-  let main_syntax='java'
+  let g:main_syntax = 'java'
 endif
 
 let s:cpo_save = &cpo
@@ -87,18 +87,18 @@
 " if necessary, on the line before that (h: \@<=), trying to match
 " neither a method reference nor a qualified method invocation.
 try
-  syn match   javaOperator	"\%(\%(::\|\.\)[[:space:]\n]*\)\@80<!\<yield\>"
+  syn match  javaOperator	"\%(\%(::\|\.\)[[:space:]\n]*\)\@80<!\<yield\>"
   let s:ff.Peek = s:ff.LeftConstant
 catch /\<E59:/
   call s:ReportOnce(v:exception)
-  syn match   javaOperator	"\%(\%(::\|\.\)[[:space:]\n]*\)\@<!\<yield\>"
+  syn match  javaOperator	"\%(\%(::\|\.\)[[:space:]\n]*\)\@<!\<yield\>"
   let s:ff.Peek = s:ff.RightConstant
 endtry
 
 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 strictfp serializable
+syn keyword javaStorageClass	static synchronized transient volatile strictfp
 syn keyword javaExceptions	throw try catch finally
 syn keyword javaAssert		assert
 syn keyword javaMethodDecl	throws
@@ -113,7 +113,7 @@
 syn region  javaAnnotation	transparent matchgroup=javaAnnotationStart start=/@\%(\K\k*\.\)*\K\k*(/ end=/)/ skip=/\/\*.\{-}\*\/\|\/\/.*$/ contains=javaAnnotation,javaParenT,javaBlock,javaString,javaBoolean,javaNumber,javaTypedef,javaComment,javaLineComment
 syn match   javaClassDecl	"@interface\>"
 syn keyword javaBranch		break continue nextgroup=javaUserLabelRef skipwhite
-syn match   javaUserLabelRef	"\k\+" contained
+syn match   javaUserLabelRef	contained "\k\+"
 syn match   javaVarArg		"\.\.\."
 syn keyword javaScopeDecl	public protected private
 syn keyword javaConceptKind	abstract final
@@ -139,7 +139,7 @@
   let [s:ff.Engine, s:ff.UpperCase, s:ff.LowerCase] = repeat([s:ff.RightConstant], 3)
 endif
 
-if exists("java_highlight_signature")
+if exists("g:java_highlight_signature")
   let [s:ff.PeekTo, s:ff.PeekFrom, s:ff.GroupArgs] = repeat([s:ff.LeftConstant], 3)
 else
   let [s:ff.PeekTo, s:ff.PeekFrom, s:ff.GroupArgs] = repeat([s:ff.RightConstant], 3)
@@ -156,7 +156,7 @@
 "
 " Note that false positives may elsewhere occur whenever an identifier
 " is butted against a less-than operator.  Cf. (X<Y) and (X < Y).
-if exists("java_highlight_generics")
+if exists("g:java_highlight_generics")
   syn keyword javaWildcardBound contained extends super
 
   " Parameterised types are delegated to javaGenerics (s:ctx.gsg) and
@@ -171,15 +171,15 @@
   endfor
 
   unlet s:ctx
-  hi def link javaWildcardBound Question
-  hi def link javaGenericsC1 javaFuncDef
-  hi def link javaGenericsC2 javaType
+  hi def link javaWildcardBound	Question
+  hi def link javaGenericsC1	javaFuncDef
+  hi def link javaGenericsC2	javaType
 endif
 
-if exists("java_highlight_java_lang_ids")
-  let java_highlight_all=1
+if exists("g:java_highlight_java_lang_ids")
+  let g:java_highlight_all = 1
 endif
-if exists("java_highlight_all")  || exists("java_highlight_java")  || exists("java_highlight_java_lang")
+if exists("g:java_highlight_all") || exists("g:java_highlight_java") || exists("g:java_highlight_java_lang")
   " java.lang.*
   "
   " The keywords of javaR_JavaLang, javaC_JavaLang, javaE_JavaLang,
@@ -208,7 +208,7 @@
   syn keyword javaC_JavaLang Boolean Character ClassLoader Compiler Double Float Integer Long Math Number Object Process Runtime SecurityManager String StringBuffer Thread ThreadGroup Byte Short Void Package RuntimePermission StrictMath StackTraceElement ProcessBuilder StringBuilder Module ModuleLayer StackWalker Record
   syn match   javaC_JavaLang "\<System\>"	" See javaDebug.
 
-  if !exists("java_highlight_generics")
+  if !exists("g:java_highlight_generics")
     " The non-interface parameterised names of java.lang members.
     exec 'syn match javaC_JavaLang "\%(\<Enum\.\)\@' . s:ff.Peek('5', '') . '<=\<EnumDesc\>"'
     syn keyword javaC_JavaLang Class InheritableThreadLocal ThreadLocal Enum ClassValue
@@ -229,10 +229,10 @@
   hi def link javaC_Java javaC_
   hi def link javaE_Java javaE_
   hi def link javaX_Java javaX_
-  hi def link javaX_		     javaExceptions
-  hi def link javaR_		     javaExceptions
-  hi def link javaE_		     javaExceptions
-  hi def link javaC_		     javaConstant
+  hi def link javaX_ javaExceptions
+  hi def link javaR_ javaExceptions
+  hi def link javaE_ javaExceptions
+  hi def link javaC_ javaConstant
 
   syn keyword javaLangObject getClass notify notifyAll wait
 
@@ -251,12 +251,12 @@
   source <sfile>:p:h/javaid.vim
 endif
 
-if exists("java_space_errors")
-  if !exists("java_no_trail_space_error")
-    syn match	javaSpaceError	"\s\+$"
+if exists("g:java_space_errors")
+  if !exists("g:java_no_trail_space_error")
+    syn match javaSpaceError "\s\+$"
   endif
-  if !exists("java_no_tab_space_error")
-    syn match	javaSpaceError	" \+\t"me=e-1
+  if !exists("g:java_no_tab_space_error")
+    syn match javaSpaceError " \+\t"me=e-1
   endif
 endif
 
@@ -280,12 +280,12 @@
 hi def link javaLabelCastType	javaType
 
 " Comments
-syn keyword javaTodo		 contained TODO FIXME XXX
+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  javaCommentString    contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell,javaSpecialError,javaTextBlockError
-  syn region  javaComment2String   contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
+if exists("g:java_comment_strings")
+  syn region  javaCommentString	contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
+  syn region  javaCommentString	contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell,javaSpecialError,javaTextBlockError
+  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 "'[^\\]'"
@@ -293,9 +293,9 @@
   syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber,javaStrTempl
 endif
 
-syn region  javaComment		 matchgroup=javaCommentStart start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,javaCommentError,javaSpaceError,@Spell fold
-syn match   javaCommentStar	 contained "^\s*\*[^/]"me=e-1
-syn match   javaCommentStar	 contained "^\s*\*$"
+syn region  javaComment		matchgroup=javaCommentStart start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,javaCommentError,javaSpaceError,@Spell fold
+syn match   javaCommentStar	contained "^\s*\*[^/]"me=e-1
+syn match   javaCommentStar	contained "^\s*\*$"
 syn match   javaLineComment	"//.*" contains=@javaCommentSpecial2,javaTodo,javaCommentMarkupTag,javaSpaceError,@Spell
 syn match   javaCommentMarkupTag contained "@\%(end\|highlight\|link\|replace\|start\)\>" nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite
 syn match   javaCommentMarkupTagAttr contained "\<region\>" nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite
@@ -308,7 +308,7 @@
 hi def link javaCommentError javaError
 hi def link javaCommentStart javaComment
 
-if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
+if !exists("g:java_ignore_javadoc") && g:main_syntax != 'jsp'
   " The overridable "html*" default links must be defined _before_ the
   " inclusion of the same default links from "html.vim".
   hi def link htmlComment	Special
@@ -349,42 +349,42 @@
 endif
 
 " match the special comment /**/
-syn match   javaComment		 "/\*\*/"
+syn match   javaComment		"/\*\*/"
 
 " Strings and constants
-syn match   javaSpecialError	 contained "\\."
+syn match   javaSpecialError	contained "\\."
 syn match   javaSpecialCharError contained "[^']"
 " Escape Sequences (JLS-17, §3.10.7):
-syn match   javaSpecialChar	 contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[bstnfr"'\\]\)"
+syn match   javaSpecialChar	contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[bstnfr"'\\]\)"
 syn region  javaString		start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
 syn region  javaString		start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecialChar,javaSpecialError,javaTextBlockError,@Spell
 syn match   javaTextBlockError	+"""\s*"""+
-syn region  javaStrTemplEmbExp	 contained matchgroup=javaStrTempl start="\\{" end="}" contains=TOP
+syn region  javaStrTemplEmbExp	contained matchgroup=javaStrTempl start="\\{" end="}" contains=TOP
 exec 'syn region javaStrTempl start=+\%(\.[[:space:]\n]*\)\@' . s:ff.Peek('80', '') . '<="+ end=+"+ contains=javaStrTemplEmbExp,javaSpecialChar,javaSpecialError,@Spell'
 exec 'syn region javaStrTempl start=+\%(\.[[:space:]\n]*\)\@' . s:ff.Peek('80', '') . '<="""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaStrTemplEmbExp,javaSpecialChar,javaSpecialError,javaTextBlockError,@Spell'
-syn match   javaCharacter	 "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
-syn match   javaCharacter	 "'\\''" contains=javaSpecialChar
-syn match   javaCharacter	 "'[^\\]'"
+syn match   javaCharacter	"'[^']*'" contains=javaSpecialChar,javaSpecialCharError
+syn match   javaCharacter	"'\\''" contains=javaSpecialChar
+syn match   javaCharacter	"'[^\\]'"
 " Integer literals (JLS-17, §3.10.1):
-syn keyword javaNumber		 0 0l 0L
-syn match   javaNumber		 "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>"
+syn keyword javaNumber		0 0l 0L
+syn match   javaNumber		"\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>"
 " Decimal floating-point literals (JLS-17, §3.10.2):
 " Against "\<\d\+\>\.":
-syn match   javaNumber		 "\<\d\%(_*\d\)*\."
-syn match   javaNumber		 "\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>"
-syn match   javaNumber		 "\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
-syn match   javaNumber		 "\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>"
+syn match   javaNumber		"\<\d\%(_*\d\)*\."
+syn match   javaNumber		"\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>"
+syn match   javaNumber		"\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
+syn match   javaNumber		"\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>"
 " Hexadecimal floating-point literals (JLS-17, §3.10.2):
-syn match   javaNumber		 "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
+syn match   javaNumber		"\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
 
 " Unicode characters
 syn match   javaSpecial "\\u\x\x\x\x"
 
 " Method declarations (JLS-17, §8.4.3, §8.4.4, §9.4).
-if exists("java_highlight_functions")
+if exists("g:java_highlight_functions")
   syn cluster javaFuncParams contains=javaAnnotation,@javaClasses,javaGenerics,javaType,javaVarArg,javaComment,javaLineComment
 
-  if exists("java_highlight_signature")
+  if exists("g:java_highlight_signature")
     syn keyword javaParamModifier contained final
     syn cluster javaFuncParams add=javaParamModifier
     hi def link javaParamModifier javaConceptKind
@@ -393,8 +393,8 @@
     syn cluster javaFuncParams add=javaScopeDecl,javaConceptKind,javaStorageClass,javaExternal
   endif
 
-  if java_highlight_functions =~# '^indent[1-8]\=$'
-    let s:last = java_highlight_functions[-1 :]
+  if g:java_highlight_functions =~# '^indent[1-8]\=$'
+    let s:last = g:java_highlight_functions[-1 :]
     let s:indent = s:last != 't' ? repeat("\x20", s:last) : "\t"
     " Try to not match other type members, initialiser blocks, enum
     " constants (JLS-17, §8.9.1), and constructors (JLS-17, §8.1.7):
@@ -430,10 +430,10 @@
   endif
 endif
 
-if exists("java_highlight_debug")
+if exists("g:java_highlight_debug")
   " Strings and constants
   syn match   javaDebugSpecial		contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[bstnfr"'\\]\)"
-  syn region  javaDebugString		contained start=+"+  end=+"+  contains=javaDebugSpecial
+  syn region  javaDebugString		contained start=+"+ end=+"+ contains=javaDebugSpecial
   syn region  javaDebugString		contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaDebugSpecial,javaDebugTextBlockError
   " The highlight groups of java{StrTempl,Debug{,Paren,StrTempl}}\,
   " share one colour by default. Do not conflate unrelated parens.
@@ -453,7 +453,7 @@
   syn match   javaDebugNumber		contained "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
   syn keyword javaDebugBoolean		contained true false
   syn keyword javaDebugType		contained null this super
-  syn region javaDebugParen  start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
+  syn region  javaDebugParen		contained start=+(+ end=+)+ contains=javaDebug.*,javaDebugParen
 
   " To make this work, define the highlighting for these groups.
   syn match javaDebug "\<System\.\%(out\|err\)\.print\%(ln\)\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
@@ -463,53 +463,53 @@
 " FIXME: What API do "trace*" belong to?
 " syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
 
-  hi def link javaDebug		 Debug
-  hi def link javaDebugString		 DebugString
-  hi def link javaDebugStrTempl		 Macro
-  hi def link javaDebugTextBlockError	 Error
-  hi def link javaDebugType		 DebugType
-  hi def link javaDebugBoolean		 DebugBoolean
-  hi def link javaDebugNumber		 Debug
-  hi def link javaDebugSpecial		 DebugSpecial
-  hi def link javaDebugSpecialCharacter DebugSpecial
-  hi def link javaDebugCharacter	 DebugString
-  hi def link javaDebugParen		 Debug
+  hi def link javaDebug			Debug
+  hi def link javaDebugString		DebugString
+  hi def link javaDebugStrTempl		Macro
+  hi def link javaDebugTextBlockError	Error
+  hi def link javaDebugType		DebugType
+  hi def link javaDebugBoolean		DebugBoolean
+  hi def link javaDebugNumber		Debug
+  hi def link javaDebugSpecial		DebugSpecial
+  hi def link javaDebugSpecialCharacter	DebugSpecial
+  hi def link javaDebugCharacter	DebugString
+  hi def link javaDebugParen		Debug
 
-  hi def link DebugString		 String
-  hi def link DebugSpecial		 Special
-  hi def link DebugBoolean		 Boolean
-  hi def link DebugType		 Type
+  hi def link DebugString		String
+  hi def link DebugSpecial		Special
+  hi def link DebugBoolean		Boolean
+  hi def link DebugType			Type
 endif
 
 " Try not to fold top-level-type bodies under assumption that there is
 " but one such body.
 exec 'syn region javaBlock transparent start="\%(^\|^\S[^:]\+\)\@' . s:ff.Peek('120', '') . '<!{" end="}" fold'
 
-if exists("java_mark_braces_in_parens_as_errors")
+if exists("g:java_mark_braces_in_parens_as_errors")
   syn match javaInParen contained "[{}]"
   hi def link javaInParen javaError
 endif
 
 " catch errors caused by wrong parenthesis
-syn region  javaParenT	transparent matchgroup=javaParen  start="(" end=")" contains=@javaTop,javaInParen,javaParenT1
-syn region  javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaInParen,javaParenT2 contained
-syn region  javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaInParen,javaParenT contained
-syn match   javaParenError	 ")"
+syn region  javaParenT	transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaInParen,javaParenT1
+syn region  javaParenT1 contained transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaInParen,javaParenT2
+syn region  javaParenT2 contained transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaInParen,javaParenT
+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	 "\]"
+syn region  javaParenT	transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
+syn region  javaParenT1 contained transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2
+syn region  javaParenT2 contained transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT
+syn match   javaParenError "\]"
 
-hi def link javaParenError	javaError
+hi def link javaParenError javaError
 
-" Lambda expressions (JLS-17, §15.27) and method references (JLS-17,
-" §15.13).
-if exists("java_highlight_functions")
+" Lambda expressions (JLS-17, §15.27) and method reference expressions
+" (JLS-17, §15.13).
+if exists("g:java_highlight_functions")
   syn match javaMethodRef ":::\@!"
   hi def link javaMethodRef javaFuncDef
 
-  if exists("java_highlight_signature")
+  if exists("g:java_highlight_signature")
     let s:ff.LambdaDef = s:ff.LeftConstant
   else
     let s:ff.LambdaDef = s:ff.RightConstant
@@ -543,8 +543,8 @@
 " Note that the syntax file "aidl.vim" relies on its availability.
 syn cluster javaTop contains=TOP,javaTopEnumDeclaration
 
-if !exists("java_minlines")
-  let java_minlines = 10
+if !exists("g:java_minlines")
+  let g:java_minlines = 10
 endif
 
 " Note that variations of a /*/ balanced comment, e.g., /*/*/, /*//*/,
@@ -553,7 +553,7 @@
 " to make synchronisation start further towards file's beginning by
 " bumping up g:java_minlines or issuing ':syntax sync fromstart' or
 " preferring &foldmethod set to 'syntax'.
-exec "syn sync ccomment javaComment minlines=" . java_minlines
+exec "syn sync ccomment javaComment minlines=" . g:java_minlines
 
 " The default highlighting.
 hi def link javaLambdaDef		Function
@@ -574,8 +574,8 @@
 hi def link javaScopeDecl		javaStorageClass
 hi def link javaConceptKind		NonText
 
-hi def link javaBoolean		Boolean
-hi def link javaSpecial		Special
+hi def link javaBoolean			Boolean
+hi def link javaSpecial			Special
 hi def link javaSpecialError		Error
 hi def link javaSpecialCharError	Error
 hi def link javaString			String
@@ -587,17 +587,17 @@
 hi def link javaTextBlockError		Error
 hi def link javaStatement		Statement
 hi def link javaOperator		Operator
-hi def link javaComment		Comment
+hi def link javaComment			Comment
 hi def link javaDocComment		Comment
 hi def link javaLineComment		Comment
 hi def link javaConstant		Constant
-hi def link javaTypedef		Typedef
+hi def link javaTypedef			Typedef
 hi def link javaTodo			Todo
 hi def link javaAnnotation		PreProc
 hi def link javaAnnotationStart		javaAnnotation
 
 hi def link javaCommentTitle		SpecialComment
-hi def link javaDocTags		Special
+hi def link javaDocTags			Special
 hi def link javaDocCodeTag		Special
 hi def link javaDocSnippetTag		Special
 hi def link javaDocParam		Function
@@ -617,8 +617,8 @@
 
 let b:current_syntax = "java"
 
-if main_syntax == 'java'
-  unlet main_syntax
+if g:main_syntax == 'java'
+  unlet g:main_syntax
 endif
 
 let b:spell_options = "contained"
