diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 01aa92a532..4a5b07c902 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 9.1. Last change: 2024 Sep 18 +*syntax.txt* For Vim version 9.1. Last change: 2024 Sep 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2176,11 +2176,12 @@ 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 = [455] + :let g:java_syntax_previews = [455, 476] The supported JEP numbers are to be drawn from this table: `430`: String Templates [JDK 21] `455`: Primitive types in Patterns, instanceof, and switch + `476`: Module Import Declarations 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 bbef266c34..800faa40a0 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 " Repository: https://github.com/zzzyxwvut/java-vim.git -" Last Change: 2024 Sep 18 +" Last Change: 2024 Sep 19 " Please check :help java.vim for comments on some of the options available. @@ -92,6 +92,13 @@ syn keyword javaTypedef this super syn keyword javaOperator new instanceof syn match javaOperator "\\%(\s*(\)\@!" +if s:ff.IsRequestedPreviewFeature(476) + " Module imports can be used in any source file. + syn match javaExternal "\" contains=javaModuleImport + syn keyword javaModuleImport contained module + hi def link javaModuleImport Statement +endif + " Since the yield statement, which could take a parenthesised operand, " and _qualified_ yield methods get along within the switch block " (JLS-17, ยง3.8), it seems futile to make a region definition for this diff --git a/runtime/syntax/testdir/dumps/java_module_info_00.dump b/runtime/syntax/testdir/dumps/java_module_info_00.dump index a80da8932f..82ef0b2cf0 100644 --- a/runtime/syntax/testdir/dumps/java_module_info_00.dump +++ b/runtime/syntax/testdir/dumps/java_module_info_00.dump @@ -1,6 +1,6 @@ >/+0#0000e05#ffffff0@1| |T|h|i|s| |m|o|d|u|l|e| |d|e|c|l|a|r|a|t|i|o|n| |b|e|l|o|n|g|s| |t|o| |t|h|e| |s|a|m|p|l|e| |p|r|o|j|e|c|t| |p|u|b|l|i|s|h|e|d| |a|t| +0#0000000&@5 |/+0#0000e05&@1| |h|t@1|p|s|:|/@1|g|i|t|h|u|b|.|c|o|m|/|z@2|y|x|w|v|u|t|/|m|o|d|u|l|e|-|i|n|f|o|.|g|i|t| |.| +0#0000000&@25 -@75 +|i+0#e000e06&|m|p|o|r|t| |m+0#af5f00255&|o|d|u|l|e| +0#0000000&|j|a|v|a|.|b|a|s|e|;| @50 |i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|S|e|r|v|i|c|e|L|o|a|d|e|r|;| @43 @75 |/+0#0000e05&|*@1| +0#0000000&@71 @@ -12,7 +12,7 @@ | +0#0000e05&|*| |@+0#e000e06&|p|r|o|v|i|d|e|s| |o+0#00e0e07&|r|g|.|d|e|m|o|.|i|n|t|e|r|n|a|l|.|T|e|s|t|a|b|l|e| +0#0000000&@35 | +0#0000e05&|*| |@+0#e000e06&|s|e@1| +0#0000e05&|S+0#00e0e07&|e|r|v|i|c|e|L|o|a|d|e|r| +0#0000000&@53 | +0#0000e05&|*|/| +0#0000000&@71 -|m+0#00e0003&|o|d|u|l|e| +0#0000000&|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|d|e|m|o| @47 +|m+0#00e0003&|o|d|u|l|e| +0#0000000&|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|d|e|m|o| |/+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|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|j|d|k|.|j|f|r|;| @46 @4|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|j|a|v|a|.|b|a|s|e|;| @51 diff --git a/runtime/syntax/testdir/dumps/java_module_info_01.dump b/runtime/syntax/testdir/dumps/java_module_info_01.dump index 793cb89336..039b16f4bf 100644 --- a/runtime/syntax/testdir/dumps/java_module_info_01.dump +++ b/runtime/syntax/testdir/dumps/java_module_info_01.dump @@ -1,5 +1,5 @@ | +0#0000e05#ffffff0|*|/| +0#0000000&@71 -|m+0#00e0003&|o|d|u|l|e| +0#0000000&|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|d|e|m|o| @47 +|m+0#00e0003&|o|d|u|l|e| +0#0000000&|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|d|e|m|o| |/+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|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|j|d|k|.|j|f|r|;| @46 @4|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|j|a|v|a|.|b|a|s|e|;| @51 diff --git a/runtime/syntax/testdir/input/java_module_info.java b/runtime/syntax/testdir/input/java_module_info.java index bfbea93a2e..0fe49efecd 100644 --- a/runtime/syntax/testdir/input/java_module_info.java +++ b/runtime/syntax/testdir/input/java_module_info.java @@ -1,6 +1,6 @@ // This module declaration belongs to the sample project published at // https://github.com/zzzyxwvut/module-info.git . - +import module java.base; import java.util.ServiceLoader; /** @@ -12,7 +12,7 @@ import java.util.ServiceLoader; * @provides org.demo.internal.Testable * @see ServiceLoader */ -module org.module.info.demo +module org.module.info.demo // JDK 23+ (--enable-preview --release 23). { requires static jdk.jfr; requires java.base; diff --git a/runtime/syntax/testdir/input/setup/java_module_info.vim b/runtime/syntax/testdir/input/setup/java_module_info.vim index 2711c1a9a0..b7b818f822 100644 --- a/runtime/syntax/testdir/input/setup/java_module_info.vim +++ b/runtime/syntax/testdir/input/setup/java_module_info.vim @@ -28,3 +28,5 @@ autocmd_add([{ cmd: 'RestoreFilename()', once: true, }]) + +g:java_syntax_previews = [476]