mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00: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
|
||||
@ -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
|
||||
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
|
||||
|
@ -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
|
||||
|
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