mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
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: #15698 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
41c7bbaf8f
commit
23079450a8
@@ -1,4 +1,4 @@
|
|||||||
*syntax.txt* For Vim version 9.1. Last change: 2024 Sep 11
|
*syntax.txt* For Vim version 9.1. Last change: 2024 Sep 18
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@@ -2176,10 +2176,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
|
withdrawn from this effort. To cater for early adopters, there is optional
|
||||||
support in Vim for syntax related preview features that are implemented. You
|
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: >
|
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:
|
The supported JEP numbers are to be drawn from this table:
|
||||||
`430`: String Templates [JDK 21]
|
`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
|
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
|
into the Java platform, its entry will be removed from the table and related
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
" Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com>
|
" Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com>
|
||||||
" Former Maintainer: Claudio Fleiner <claudio@fleiner.com>
|
" Former Maintainer: Claudio Fleiner <claudio@fleiner.com>
|
||||||
" Repository: https://github.com/zzzyxwvut/java-vim.git
|
" 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.
|
" Please check :help java.vim for comments on some of the options available.
|
||||||
|
|
||||||
@@ -283,19 +283,27 @@ if exists("g:java_space_errors")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*::\@!"he=e-1'
|
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
|
syn region javaLabelRegion transparent matchgroup=javaLabel start="\<default\>\%(\s*\%(:\|->\)\)\@=" matchgroup=NONE end=":\|->" oneline
|
||||||
" Consider grouped _default_ _case_ labels, i.e.
|
" Consider grouped _default_ _case_ labels, i.e.
|
||||||
" case null, default ->
|
" case null, default ->
|
||||||
" case null: default:
|
" case null: default:
|
||||||
syn keyword javaLabelDefault contained default
|
syn keyword javaLabelDefault contained default
|
||||||
syn keyword javaLabelVarType contained var
|
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
|
" Allow for the contingency of the enclosing region not being able to
|
||||||
" _keep_ its _end_, e.g. case ':':.
|
" _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 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
|
" Comments
|
||||||
syn keyword javaTodo contained TODO FIXME XXX
|
syn keyword javaTodo contained TODO FIXME XXX
|
||||||
@@ -692,8 +700,6 @@ hi def link javaUserLabelRef javaUserLabel
|
|||||||
hi def link javaLabel Label
|
hi def link javaLabel Label
|
||||||
hi def link javaLabelDefault javaLabel
|
hi def link javaLabelDefault javaLabel
|
||||||
hi def link javaLabelVarType javaOperator
|
hi def link javaLabelVarType javaOperator
|
||||||
hi def link javaLabelNumber javaNumber
|
|
||||||
hi def link javaLabelCastType javaType
|
|
||||||
|
|
||||||
hi def link javaComment Comment
|
hi def link javaComment Comment
|
||||||
hi def link javaCommentStar javaComment
|
hi def link javaCommentStar javaComment
|
||||||
|
20
runtime/syntax/testdir/dumps/java_previews_455_00.dump
Normal file
20
runtime/syntax/testdir/dumps/java_previews_455_00.dump
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|s|y|n|t|a|x|_|p|r|e|v|i|e|w|s| |=| |[|4|5@1|]| +0#0000000&@22
|
||||||
|
@75
|
||||||
|
@75
|
||||||
|
@75
|
||||||
|
|c+0#00e0003&|l|a|s@1| +0#0000000&|P|r|i|m|i|t|i|v|e|S|w|i|t|c|h|T|e|s|t|s| @1|/+0#0000e05&@1| |J|D|K| |2|3|+| |(|-@1|e|n|a|b|l|e|-|p|r|e|v|i|e|w| |-@1|r|e|l|e|a|s|e| |2|3|)|.| +0#0000000&@3
|
||||||
|
|{| @73
|
||||||
|
@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|e|c|h|o|(|O|b|j|e|c|t| |o|)| |{| |S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|o|)|;| |}| @17
|
||||||
|
@75
|
||||||
|
@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
|
||||||
|
@8|l+0#00e0003&|o|n|g| +0#0000000&|g| |=| |2+0#e000002&|L|;+0#0000000&| @54
|
||||||
|
@75
|
||||||
|
@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|g|)| |{| @54
|
||||||
|
@8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|L|:+0#0000000&| @7|{| |e|c|h|o|(|0+0#e000002&|L|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @30
|
||||||
|
@8|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|L|:+0#0000000&| @7|{| |e|c|h|o|(|1+0#e000002&|L|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @30
|
||||||
|
@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|-|1+0#e000002&|L|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
|
||||||
|
@8|}| @65
|
||||||
|
@75
|
||||||
|
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|g|)| |{| @49
|
||||||
|
@12|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|L| +0#0000000&@4|-|>| |0+0#e000002&|L|;+0#0000000&| @44
|
||||||
|
@57|1|,|1| @10|T|o|p|
|
20
runtime/syntax/testdir/dumps/java_previews_455_01.dump
Normal file
20
runtime/syntax/testdir/dumps/java_previews_455_01.dump
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
| +0&#ffffff0@7|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|L|:+0#0000000&| @7|{| |e|c|h|o|(|1+0#e000002&|L|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @30
|
||||||
|
@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|-|1+0#e000002&|L|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
|
||||||
|
@8|}| @65
|
||||||
|
@75
|
||||||
|
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|g|)| |{| @49
|
||||||
|
@12>c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|L| +0#0000000&@4|-|>| |0+0#e000002&|L|;+0#0000000&| @44
|
||||||
|
@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|L| +0#0000000&@4|-|>| |1+0#e000002&|L|;+0#0000000&| @44
|
||||||
|
@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |-|1+0#e000002&|L|;+0#0000000&| @43
|
||||||
|
@8|}|)|;| @63
|
||||||
|
@75
|
||||||
|
@8|b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|b|o@1|l| |=| |f+0#e000002&|a|l|s|e|;+0#0000000&| @45
|
||||||
|
@75
|
||||||
|
@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|b|o@1|l|)| |{| @51
|
||||||
|
@8|c+0#af5f00255&|a|s|e| +0#0000000&|t+0#e000002&|r|u|e|:+0#0000000&| @5|{| |e|c|h|o|(|t+0#e000002&|r|u|e|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @28
|
||||||
|
@8|c+0#af5f00255&|a|s|e| +0#0000000&|f+0#e000002&|a|l|s|e|:+0#0000000&| @4|{| |e|c|h|o|(|f+0#e000002&|a|l|s|e|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
|
||||||
|
@8|}| @65
|
||||||
|
@75
|
||||||
|
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|b|o@1|l|)| |{| @46
|
||||||
|
@12|c+0#af5f00255&|a|s|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@2|-|>| |t+0#e000002&|r|u|e|;+0#0000000&| @42
|
||||||
|
@57|1|9|,|4|-|1|3| @6|2|8|%|
|
20
runtime/syntax/testdir/dumps/java_previews_455_02.dump
Normal file
20
runtime/syntax/testdir/dumps/java_previews_455_02.dump
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@2|-|>| |t+0#e000002&|r|u|e|;+0#0000000&| @42
|
||||||
|
@12|c+0#af5f00255&|a|s|e| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@1|-|>| |f+0#e000002&|a|l|s|e|;+0#0000000&| @41
|
||||||
|
@8|}|)|;| @63
|
||||||
|
@75
|
||||||
|
@8|f+0#00e0003&|l|o|a|t| +0#0000000&|f| |=| |2+0#e000002&|.|0|f|;+0#0000000&| @51
|
||||||
|
> @74
|
||||||
|
@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|f|)| |{| @54
|
||||||
|
@8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|.|0|f|:+0#0000000&| @5|{| |e|c|h|o|(|0+0#e000002&|.|0|f|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @28
|
||||||
|
@8|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|.|0|f|:+0#0000000&| @5|{| |e|c|h|o|(|1+0#e000002&|.|0|f|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @28
|
||||||
|
@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|-|1+0#e000002&|.|0|f|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
|
||||||
|
@8|}| @65
|
||||||
|
@75
|
||||||
|
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|f|)| |{| @49
|
||||||
|
@12|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|.|0|f| +0#0000000&@2|-|>| |0+0#e000002&|.|0|f|;+0#0000000&| @42
|
||||||
|
@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|.|0|f| +0#0000000&@2|-|>| |1+0#e000002&|.|0|f|;+0#0000000&| @42
|
||||||
|
@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |-|1+0#e000002&|.|0|f|;+0#0000000&| @41
|
||||||
|
@8|}|)|;| @63
|
||||||
|
@75
|
||||||
|
@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|d| |=| |2+0#e000002&|.|0|;+0#0000000&| @51
|
||||||
|
@57|3|7|,|0|-|1| @7|6|8|%|
|
20
runtime/syntax/testdir/dumps/java_previews_455_03.dump
Normal file
20
runtime/syntax/testdir/dumps/java_previews_455_03.dump
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
| +0&#ffffff0@7|d+0#00e0003&|o|u|b|l|e| +0#0000000&|d| |=| |2+0#e000002&|.|0|;+0#0000000&| @51
|
||||||
|
@75
|
||||||
|
@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|d|)| |{| @54
|
||||||
|
@8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|.|0|:+0#0000000&| @6|{| |e|c|h|o|(|0+0#e000002&|.|0|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
|
||||||
|
@8|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|.|0|:+0#0000000&| @6|{| |e|c|h|o|(|1+0#e000002&|.|0|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
|
||||||
|
@8>d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|-|1+0#e000002&|.|0|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @28
|
||||||
|
@8|}| @65
|
||||||
|
@75
|
||||||
|
@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|d|)| |{| @49
|
||||||
|
@12|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|.|0| +0#0000000&@3|-|>| |0+0#e000002&|.|0|;+0#0000000&| @43
|
||||||
|
@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|.|0| +0#0000000&@3|-|>| |1+0#e000002&|.|0|;+0#0000000&| @43
|
||||||
|
@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |-|1+0#e000002&|.|0|;+0#0000000&| @42
|
||||||
|
@8|}|)|;| @63
|
||||||
|
@4|}| @69
|
||||||
|
|}| @73
|
||||||
|
|~+0#4040ff13&| @73
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
||||||
|
| +0#0000000&@56|5@1|,|3|-|9| @7|B|o|t|
|
64
runtime/syntax/testdir/input/java_previews_455.java
Normal file
64
runtime/syntax/testdir/input/java_previews_455.java
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
// VIM_TEST_SETUP let g:java_syntax_previews = [455]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class PrimitiveSwitchTests // JDK 23+ (--enable-preview --release 23).
|
||||||
|
{
|
||||||
|
static void echo(Object o) { System.out.println(o); }
|
||||||
|
|
||||||
|
static {
|
||||||
|
long g = 2L;
|
||||||
|
|
||||||
|
switch (g) {
|
||||||
|
case 0L: { echo(0L); break; }
|
||||||
|
case 1L: { echo(1L); break; }
|
||||||
|
default: { echo(-1L); break; }
|
||||||
|
}
|
||||||
|
|
||||||
|
echo(switch (g) {
|
||||||
|
case 0L -> 0L;
|
||||||
|
case 1L -> 1L;
|
||||||
|
default -> -1L;
|
||||||
|
});
|
||||||
|
|
||||||
|
boolean bool = false;
|
||||||
|
|
||||||
|
switch (bool) {
|
||||||
|
case true: { echo(true); break; }
|
||||||
|
case false: { echo(false); break; }
|
||||||
|
}
|
||||||
|
|
||||||
|
echo(switch (bool) {
|
||||||
|
case true -> true;
|
||||||
|
case false -> false;
|
||||||
|
});
|
||||||
|
|
||||||
|
float f = 2.0f;
|
||||||
|
|
||||||
|
switch (f) {
|
||||||
|
case 0.0f: { echo(0.0f); break; }
|
||||||
|
case 1.0f: { echo(1.0f); break; }
|
||||||
|
default: { echo(-1.0f); break; }
|
||||||
|
}
|
||||||
|
|
||||||
|
echo(switch (f) {
|
||||||
|
case 0.0f -> 0.0f;
|
||||||
|
case 1.0f -> 1.0f;
|
||||||
|
default -> -1.0f;
|
||||||
|
});
|
||||||
|
|
||||||
|
double d = 2.0;
|
||||||
|
|
||||||
|
switch (d) {
|
||||||
|
case 0.0: { echo(0.0); break; }
|
||||||
|
case 1.0: { echo(1.0); break; }
|
||||||
|
default: { echo(-1.0); break; }
|
||||||
|
}
|
||||||
|
|
||||||
|
echo(switch (d) {
|
||||||
|
case 0.0 -> 0.0;
|
||||||
|
case 1.0 -> 1.0;
|
||||||
|
default -> -1.0;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user