changeset 35866:99f95ccbdaf4

runtime(java): Cluster optional group definitions and their group links Commit: https://github.com/vim/vim/commit/77b87c30d93dc2049a41c4ea5884f26612d7cd58 Author: Aliaksei Budavei <0x000c70@gmail.com> Date: Wed Jul 31 22:15:16 2024 +0200 runtime(java): Cluster optional group definitions and their group links And keep non-optional group links at the end of the file. related: #15399 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Wed, 31 Jul 2024 22:30:06 +0200
parents 5bed189babc2
children ceae17f28228
files runtime/syntax/java.vim
diffstat 1 files changed, 52 insertions(+), 58 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -65,7 +65,6 @@ syn match javaError "<<<\|\.\.\|=>\|||=\
 
 " use separate name so that it can be deleted in javacc.vim
 syn match   javaError2 "#\|=<"
-hi def link javaError2 javaError
 
 " Keywords (JLS-17, §3.9):
 syn keyword javaExternal	native package
@@ -121,15 +120,6 @@ syn match   javaConceptKind	"\<non-seale
 syn match   javaConceptKind	"\<sealed\>\%(\s*(\)\@!"
 syn match   javaConceptKind	"\<default\>\%(\s*\%(:\|->\)\)\@!"
 
-" Note that a "module-info" file will be recognised with an arbitrary
-" file extension (or no extension at all) so that more than one such
-" declaration for the same Java module can be maintained for modular
-" testing in a project without attendant confusion for IDEs, with the
-" ".java\=" extension used for a production version and an arbitrary
-" extension used for a testing version.
-let s:module_info_cur_buf = fnamemodify(bufname("%"), ":t") =~ '^module-info\%(\.class\>\)\@!'
-lockvar s:module_info_cur_buf
-
 if !(v:version < 704)
   " Request the new regexp engine for [:upper:] and [:lower:].
   let [s:ff.Engine, s:ff.UpperCase, s:ff.LowerCase] = repeat([s:ff.LeftConstant], 3)
@@ -145,11 +135,21 @@ else
   let [s:ff.PeekTo, s:ff.PeekFrom, s:ff.GroupArgs] = repeat([s:ff.RightConstant], 3)
 endif
 
-" Java modules (since Java 9, for "module-info.java" file).
-if s:module_info_cur_buf
+" Java module declarations (JLS-17, §7.7).
+"
+" Note that a "module-info" file will be recognised with an arbitrary
+" file extension (or no extension at all) so that more than one such
+" declaration for the same Java module can be maintained for modular
+" testing in a project without attendant confusion for IDEs, with the
+" ".java\=" extension used for a production version and an arbitrary
+" extension used for a testing version.
+if fnamemodify(bufname("%"), ":t") =~ '^module-info\%(\.class\>\)\@!'
   syn keyword javaModuleStorageClass	module transitive
   syn keyword javaModuleStmt		open requires exports opens uses provides
   syn keyword javaModuleExternal	to with
+  hi def link javaModuleStorageClass	StorageClass
+  hi def link javaModuleStmt		Statement
+  hi def link javaModuleExternal	Include
 endif
 
 " Fancy parameterised types (JLS-17, §4.5).
@@ -172,8 +172,8 @@ if exists("g:java_highlight_generics")
 
   unlet s:ctx
   hi def link javaWildcardBound	Question
-  hi def link javaGenericsC1	javaFuncDef
-  hi def link javaGenericsC2	javaType
+  hi def link javaGenericsC1	Function
+  hi def link javaGenericsC2	Type
 endif
 
 if exists("g:java_highlight_java_lang_ids")
@@ -258,6 +258,7 @@ if exists("g:java_space_errors")
   if !exists("g:java_no_tab_space_error")
     syn match javaSpaceError " \+\t"me=e-1
   endif
+  hi def link javaSpaceError Error
 endif
 
 exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*::\@!"he=e-1'
@@ -274,10 +275,6 @@ syn keyword javaLabelCastType	contained 
 syn region  javaLabelWhenClause	contained transparent matchgroup=javaLabel start="\<when\>" matchgroup=NONE end=":"me=e-1 end="->"me=e-2 contains=TOP,javaExternal,javaLambdaDef
 syn match   javaLabelNumber	contained "\<0\>[lL]\@!"
 syn match   javaLabelNumber	contained "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)\>[lL]\@!"
-hi def link javaLabelDefault	javaLabel
-hi def link javaLabelVarType	javaOperator
-hi def link javaLabelNumber	javaNumber
-hi def link javaLabelCastType	javaType
 
 " Comments
 syn keyword javaTodo		contained TODO FIXME XXX
@@ -299,14 +296,8 @@ syn match   javaCommentStar	contained "^
 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
-exec 'syn region javaCommentMarkupTagAttr contained transparent matchgroup=htmlArg start=/\<\%(re\%(gex\|gion\|placement\)\|substring\|t\%(arget\|ype\)\)\%(\s*=\)\@=/ matchgroup=htmlString end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.-]\|\k\)\+\)/ nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite oneline'
-hi def link javaCommentMarkupTagAttr htmlArg
-hi def link javaCommentString javaString
-hi def link javaComment2String javaString
-hi def link javaCommentCharacter javaCharacter
+exec 'syn region javaCommentMarkupTagAttr contained transparent matchgroup=javaHtmlArg start=/\<\%(re\%(gex\|gion\|placement\)\|substring\|t\%(arget\|ype\)\)\%(\s*=\)\@=/ matchgroup=javaHtmlString end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.-]\|\k\)\+\)/ nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite oneline'
 syn match   javaCommentError contained "/\*"me=e-1 display
-hi def link javaCommentError javaError
-hi def link javaCommentStart javaComment
 
 if !exists("g:java_ignore_javadoc") && g:main_syntax != 'jsp'
   " The overridable "html*" default links must be defined _before_ the
@@ -341,11 +332,18 @@ if !exists("g:java_ignore_javadoc") && g
   syn match  javaDocSeeTagParam	contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\%(\k\|\.\)*\%(#\k\+\%((\_[^)]*)\)\=\)\=@ contains=@javaHtml extend
   syn region javaCodeSkipBlock	contained transparent start="{\%(@code\>\)\@!" end="}" contains=javaCodeSkipBlock,javaDocCodeTag
   syn region javaDocCodeTag	contained start="{@code\>" end="}" contains=javaDocCodeTag,javaCodeSkipBlock
-  exec 'syn region javaDocSnippetTagAttr contained transparent matchgroup=htmlArg start=/\<\%(class\|file\|id\|lang\|region\)\%(\s*=\)\@=/ matchgroup=htmlString end=/:$/ end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.\\/-]\|\k\)\+\)/ nextgroup=javaDocSnippetTagAttr skipwhite skipnl'
+  exec 'syn region javaDocSnippetTagAttr contained transparent matchgroup=javaHtmlArg start=/\<\%(class\|file\|id\|lang\|region\)\%(\s*=\)\@=/ matchgroup=javaHtmlString end=/:$/ end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.\\/-]\|\k\)\+\)/ nextgroup=javaDocSnippetTagAttr skipwhite skipnl'
   syn region javaSnippetSkipBlock contained transparent start="{\%(@snippet\>\)\@!" end="}" contains=javaSnippetSkipBlock,javaDocSnippetTag,javaCommentMarkupTag
   syn region javaDocSnippetTag	contained start="{@snippet\>" end="}" contains=javaDocSnippetTag,javaSnippetSkipBlock,javaDocSnippetTagAttr,javaCommentMarkupTag
 
   syntax case match
+  hi def link javaDocComment		Comment
+  hi def link javaCommentTitle		SpecialComment
+  hi def link javaDocTags		Special
+  hi def link javaDocCodeTag		Special
+  hi def link javaDocSnippetTag		Special
+  hi def link javaDocSeeTagParam	Function
+  hi def link javaDocParam		Function
 endif
 
 " match the special comment /**/
@@ -385,9 +383,7 @@ if exists("g:java_highlight_functions")
   syn cluster javaFuncParams contains=javaAnnotation,@javaClasses,javaGenerics,javaType,javaVarArg,javaComment,javaLineComment
 
   if exists("g:java_highlight_signature")
-    syn keyword javaParamModifier contained final
     syn cluster javaFuncParams add=javaParamModifier
-    hi def link javaParamModifier javaConceptKind
     hi def link javaFuncDefStart javaFuncDef
   else
     syn cluster javaFuncParams add=javaScopeDecl,javaConceptKind,javaStorageClass,javaExternal
@@ -501,13 +497,10 @@ syn region  javaParenT1 contained transp
 syn region  javaParenT2 contained transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT
 syn match   javaParenError "\]"
 
-hi def link javaParenError javaError
-
 " 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("g:java_highlight_signature")
     let s:ff.LambdaDef = s:ff.LeftConstant
@@ -534,9 +527,13 @@ if exists("g:java_highlight_functions")
   exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent start=/', 'match javaLambdaDef "') . '\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!' . s:ff.LambdaDef('\%([[:space:]\n]*\z(->\)\)\@=/ matchgroup=javaLambdaDefStart end=/\z1/', '[[:space:]\n]*->"')
 
   syn keyword javaParamModifier contained final
-  hi def link javaParamModifier javaConceptKind
   syn keyword javaLambdaVarType contained var
-  hi def link javaLambdaVarType javaOperator
+  hi def link javaParamModifier		javaConceptKind
+  hi def link javaLambdaVarType		javaOperator
+  hi def link javaLambdaDef		javaFuncDef
+  hi def link javaLambdaDefStart	javaFuncDef
+  hi def link javaMethodRef		javaFuncDef
+  hi def link javaFuncDef		Function
 endif
 
 " The @javaTop cluster comprises non-contained Java syntax groups.
@@ -556,14 +553,8 @@ endif
 exec "syn sync ccomment javaComment minlines=" . g:java_minlines
 
 " The default highlighting.
-hi def link javaLambdaDef		Function
-hi def link javaLambdaDefStart		Function
-hi def link javaFuncDef			Function
 hi def link javaVarArg			Function
 hi def link javaBranch			Conditional
-hi def link javaUserLabelRef		javaUserLabel
-hi def link javaLabel			Label
-hi def link javaUserLabel		Label
 hi def link javaConditional		Conditional
 hi def link javaRepeat			Repeat
 hi def link javaExceptions		Exception
@@ -584,36 +575,39 @@ hi def link javaCharacter		Character
 hi def link javaSpecialChar		SpecialChar
 hi def link javaNumber			Number
 hi def link javaError			Error
+hi def link javaError2			javaError
 hi def link javaTextBlockError		Error
+hi def link javaParenError		javaError
 hi def link javaStatement		Statement
 hi def link javaOperator		Operator
-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 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 javaDocCodeTag		Special
-hi def link javaDocSnippetTag		Special
-hi def link javaDocParam		Function
-hi def link javaDocSeeTagParam		Function
-hi def link javaCommentStar		javaComment
-
 hi def link javaType			Type
 hi def link javaExternal		Include
 
-hi def link javaSpaceError		Error
+hi def link javaUserLabel		Label
+hi def link javaUserLabelRef		javaUserLabel
+hi def link javaLabel			Label
+hi def link javaLabelDefault		javaLabel
+hi def link javaLabelVarType		javaOperator
+hi def link javaLabelNumber		javaNumber
+hi def link javaLabelCastType		javaType
 
-if s:module_info_cur_buf
-  hi def link javaModuleStorageClass	StorageClass
-  hi def link javaModuleStmt		Statement
-  hi def link javaModuleExternal	Include
-endif
+hi def link javaComment			Comment
+hi def link javaCommentStar		javaComment
+hi def link javaLineComment		Comment
+hi def link javaCommentMarkupTagAttr	javaHtmlArg
+hi def link javaCommentString		javaString
+hi def link javaComment2String		javaString
+hi def link javaCommentCharacter	javaCharacter
+hi def link javaCommentError		javaError
+hi def link javaCommentStart		javaComment
+
+hi def link javaHtmlArg			Type
+hi def link javaHtmlString		String
 
 let b:current_syntax = "java"
 
@@ -623,7 +617,7 @@ endif
 
 let b:spell_options = "contained"
 let &cpo = s:cpo_save
-unlet s:module_info_cur_buf s:ff s:cpo_save
+unlet s:ff s:cpo_save
 
 " See ":help vim9-mix".
 if !has("vim9script")