]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(java): Optionally recognise _module_ import declarations
authorAliaksei Budavei <0x000c70@gmail.com>
Fri, 20 Sep 2024 19:37:46 +0000 (21:37 +0200)
committerChristian Brabandt <cb@256bit.org>
Fri, 20 Sep 2024 19:38:21 +0000 (21:38 +0200)
Define "g:java_syntax_previews" and include number 476 in
its list to enable this recognition:
------------------------------------------------------------
        let g:java_syntax_previews = [476]
------------------------------------------------------------

Reference:
https://openjdk.org/jeps/476

closes: #15709

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/doc/syntax.txt
runtime/syntax/java.vim
runtime/syntax/testdir/dumps/java_module_info_00.dump
runtime/syntax/testdir/dumps/java_module_info_01.dump
runtime/syntax/testdir/input/java_module_info.java
runtime/syntax/testdir/input/setup/java_module_info.vim

index 01aa92a53276c8b50335aa203056862d19cf848f..4a5b07c902aa2926212e75af7938509444768533 100644 (file)
@@ -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
index bbef266c34eac3490cdae46c535d269fa9485ccb..800faa40a0418920594b2d05eab3b8a69b69f0b2 100644 (file)
@@ -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 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       "\<var\>\%(\s*(\)\@!"
 
+if s:ff.IsRequestedPreviewFeature(476)
+  " Module imports can be used in any source file.
+  syn match   javaExternal     "\<import\s\+module\>" 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
index a80da8932fed8b1dc5b00325b5d48399a8b788cc..82ef0b2cf0550a8a78b39c2ee3a487b4acfb7cc9 100644 (file)
@@ -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
index 793cb89336f99fb4c52fb15731132fc71969e158..039b16f4bfc7f513bfbb087f3466dd1f54cb2295 100644 (file)
@@ -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
index bfbea93a2e3649abdaaee113f586bb85541da534..0fe49efecd267159fcfd4895ac3c732260486ef6 100644 (file)
@@ -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;
index 2711c1a9a0609522e13cf9e2e528dd39e7c997a2..b7b818f822825196326b4e6b960bc6de2c0e45a1 100644 (file)
@@ -28,3 +28,5 @@ autocmd_add([{
     cmd:       'RestoreFilename()',
     once:      true,
 }])
+
+g:java_syntax_previews = [476]