aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2024-07-25 09:26:13 +0200
committerChristian Clason <c.clason@uni-graz.at>2024-07-25 10:01:35 +0200
commit108d2bf74bc02eaed74beae5589d7116936aefa5 (patch)
treef514354a756a8e66a6cceafaa5e311c7b02db4d2
parent90d40c68dcb91f30ad416e5d368cd230585c584d (diff)
downloadrneovim-108d2bf74bc02eaed74beae5589d7116936aefa5.tar.gz
rneovim-108d2bf74bc02eaed74beae5589d7116936aefa5.tar.bz2
rneovim-108d2bf74bc02eaed74beae5589d7116936aefa5.zip
vim-patch:e73e5b8: runtime(java): Optionally highlight the :: token for method references
This token will be highlighted, similar to the arrow of lambda expressions, whenever "g:java_highlight_functions" is defined. Also: - Improve the recognition of _switch-case_ labels (D-Cysteine). - Remove insignificant empty statements in syntax test files. closes: vim/vim#15322 References: https://docs.oracle.com/javase/specs/jls/se21/html/jls-15.html#jls-15.13 https://github.com/fleiner/vim/pull/1 https://github.com/vim/vim/commit/e73e5b889b52675a9ea58cf154235c7f25d107d5 Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com> Co-authored-by: D-Cysteine <54219287+D-Cysteine@users.noreply.github.com>
-rw-r--r--runtime/doc/syntax.txt16
-rw-r--r--runtime/syntax/java.vim10
2 files changed, 16 insertions, 10 deletions
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 4d301bcb80..f7a8940a52 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1574,11 +1574,11 @@ use the following: >
:let java_highlight_java_io=1
Check the javaid.vim file for a list of all the packages that are supported.
-Function names are not highlighted, as the way to find functions depends on
-how you write Java code. The syntax file knows two possible ways to highlight
-headers of function declarations:
+Headers of indented function declarations can be highlighted (along with parts
+of lambda expressions and method reference expressions), but it depends on how
+you write Java code. Two formats are recognized:
-If you write function declarations that are consistently indented by either
+1) If you write function declarations that are consistently indented by either
a tab, or a space . . . or eight space character(s), you may want to set >
:let java_highlight_functions="indent"
:let java_highlight_functions="indent1"
@@ -1590,10 +1590,12 @@ a tab, or a space . . . or eight space character(s), you may want to set >
:let java_highlight_functions="indent7"
:let java_highlight_functions="indent8"
Note that in terms of 'shiftwidth', this is the leftmost step of indentation.
-However, if you follow the Java guidelines about how functions and classes are
-supposed to be named (with respect to upper- and lowercase) and there is any
-amount of indentation, you may want to set >
+
+2) However, if you follow the Java guidelines about how functions and types
+are supposed to be named (with respect to upper- and lowercase) and there is
+any amount of indentation, you may want to set >
:let java_highlight_functions="style"
+
In addition, you can combine any value of "java_highlight_functions" with >
:let java_highlight_signature=1
to have the name of a function with its parameter list parens distinctly
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index 4beeaad224..9c4964db71 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 <claudio@fleiner.com>
" Repository: https://github.com/zzzyxwvut/java-vim.git
-" Last Change: 2024 Jun 22
+" Last Change: 2024 Jul 23
" Please check :help java.vim for comments on some of the options available.
@@ -260,7 +260,7 @@ if exists("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
syn region javaLabelRegion transparent matchgroup=javaLabel start="\<default\>\%(\s*\%(:\|->\)\)\@=" matchgroup=NONE end=":\|->" oneline
" Consider grouped _default_ _case_ labels, i.e.
@@ -497,8 +497,12 @@ syn match javaParenError "\]"
hi def link javaParenError javaError
-" Lambda expressions (JLS-17, §15.27).
+" Lambda expressions (JLS-17, §15.27) and method references (JLS-17,
+" §15.13).
if exists("java_highlight_functions")
+ syn match javaMethodRef ":::\@!"
+ hi def link javaMethodRef javaFuncDef
+
if exists("java_highlight_signature")
let s:ff.LambdaDef = s:ff.LeftConstant
else