aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2024-09-19 18:56:19 +0200
committerChristian Clason <c.clason@uni-graz.at>2024-09-21 11:25:41 +0200
commitf5883e0d450ccc3345cd8cfdfbeddcfe121d7472 (patch)
tree99973dc3ac576c2693b05ef63e8963cb8e2d3ba4
parent674c1aac11f4a4dd02945a1cc7061b5fc59d048c (diff)
downloadrneovim-f5883e0d450ccc3345cd8cfdfbeddcfe121d7472.tar.gz
rneovim-f5883e0d450ccc3345cd8cfdfbeddcfe121d7472.tar.bz2
rneovim-f5883e0d450ccc3345cd8cfdfbeddcfe121d7472.zip
vim-patch:2307945: runtime(java): Optionally recognise all primitive constants in _switch-case_ labels
Define "g:java_syntax_previews" and include number 455 in its list to enable this recognition: ------------------------------------------------------------ let g:java_syntax_previews = [455] ------------------------------------------------------------ Reference: https://openjdk.org/jeps/455 closes: vim/vim#15698 https://github.com/vim/vim/commit/23079450a8dea98f9d4e3e74ab57866914b0a813 Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
-rw-r--r--runtime/doc/syntax.txt3
-rw-r--r--runtime/syntax/java.vim20
2 files changed, 15 insertions, 8 deletions
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index e7960a5cc8..0662607621 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1704,10 +1704,11 @@ cycles for such a feature to become either integrated into the platform or
withdrawn from this effort. To cater for early adopters, there is optional
support in Vim for syntax related preview features that are implemented. You
can request it by specifying a list of preview feature numbers as follows: >
- :let g:java_syntax_previews = [430]
+ :let g:java_syntax_previews = [455]
The supported JEP numbers are to be drawn from this table:
`430`: String Templates [JDK 21]
+ `455`: Primitive types in Patterns, instanceof, and switch
Note that as soon as the particular preview feature will have been integrated
into the Java platform, its entry will be removed from the table and related
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index d3b59c186d..bbef266c34 100644
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -3,7 +3,7 @@
" Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com>
" Former Maintainer: Claudio Fleiner <claudio@fleiner.com>
" Repository: https://github.com/zzzyxwvut/java-vim.git
-" Last Change: 2024 Sep 11
+" Last Change: 2024 Sep 18
" Please check :help java.vim for comments on some of the options available.
@@ -283,19 +283,27 @@ if exists("g:java_space_errors")
endif
exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*::\@!"he=e-1'
-syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
+
+if s:ff.IsRequestedPreviewFeature(455)
+ syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaBoolean,javaNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaType,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
+else
+ syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
+ syn keyword javaLabelCastType contained char byte short int
+ 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 javaLabelCastType javaType
+ hi def link javaLabelNumber javaNumber
+endif
+
syn region javaLabelRegion transparent matchgroup=javaLabel start="\<default\>\%(\s*\%(:\|->\)\)\@=" matchgroup=NONE end=":\|->" oneline
" Consider grouped _default_ _case_ labels, i.e.
" case null, default ->
" case null: default:
syn keyword javaLabelDefault contained default
syn keyword javaLabelVarType contained var
-syn keyword javaLabelCastType contained char byte short int
" Allow for the contingency of the enclosing region not being able to
" _keep_ its _end_, e.g. case ':':.
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]\@!"
" Comments
syn keyword javaTodo contained TODO FIXME XXX
@@ -692,8 +700,6 @@ 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
hi def link javaComment Comment
hi def link javaCommentStar javaComment