neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit f5883e0d450ccc3345cd8cfdfbeddcfe121d7472
parent 674c1aac11f4a4dd02945a1cc7061b5fc59d048c
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Thu, 19 Sep 2024 18:56:19 +0200

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>

Diffstat:
Mruntime/doc/syntax.txt | 3++-
Mruntime/syntax/java.vim | 20+++++++++++++-------
2 files changed, 15 insertions(+), 8 deletions(-)

diff --git 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 @@ -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