aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2024-08-22 21:25:51 +0200
committerChristian Clason <c.clason@uni-graz.at>2024-08-22 23:45:48 +0200
commit3b32869ced32821fb58f0a7c08094105be7bdaf0 (patch)
tree85ef5a9dd6fca64f480abc0afd3b3cc8698a44f8
parent8db8793503511c13c8da9e6fd9c9d0468e42f67b (diff)
downloadrneovim-3b32869ced32821fb58f0a7c08094105be7bdaf0.tar.gz
rneovim-3b32869ced32821fb58f0a7c08094105be7bdaf0.tar.bz2
rneovim-3b32869ced32821fb58f0a7c08094105be7bdaf0.zip
vim-patch:2750b83: runtime(java): Make the bundled &foldtext function optional
- Obtain and pass through translated messages with this function. - If "g:java_foldtext_show_first_or_second_line" is defined, assign this function to &foldtext. closes: vim/vim#15549 https://github.com/vim/vim/commit/2750b83fa1a917c13d0cae3e791493720dcaadaa Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
-rw-r--r--runtime/doc/syntax.txt8
-rw-r--r--runtime/syntax/java.vim64
2 files changed, 50 insertions, 22 deletions
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 806cecedbe..7f4b4495be 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1663,6 +1663,14 @@ Note that these three variables are maintained in the HTML syntax file.
Numbers and strings can be recognized in non-Javadoc comments with >
:let g:java_comment_strings = 1
+When 'foldmethod' is set to "syntax", blocks of code and multi-line comments
+will be folded. No text is usually written in the first line of a multi-line
+comment, making folded contents of Javadoc comments less informative with the
+default 'foldtext' value; you may opt for showing the contents of a second
+line for any comments written in this way, and showing the contents of a first
+line otherwise, with >
+ :let g:java_foldtext_show_first_or_second_line = 1
+
Trailing whitespace characters or a run of space characters before a tab
character can be marked as an error with >
:let g:java_space_errors = 1
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index 0ed8194594..51ef8395b9 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 Jul 30
+" Last Change: 2024 Aug 22
" Please check :help java.vim for comments on some of the options available.
@@ -39,17 +39,27 @@ else
endfunction
endif
-function! JavaSyntaxFoldTextExpr() abort
- return getline(v:foldstart) !~ '/\*\+\s*$'
- \ ? foldtext()
- \ : printf('+-%s%3d lines: ',
- \ v:folddashes,
- \ (v:foldend - v:foldstart + 1)) .
- \ getline(v:foldstart + 1)
-endfunction
+if exists("g:java_foldtext_show_first_or_second_line")
+ function! s:LazyPrefix(prefix, dashes, count) abort
+ return empty(a:prefix)
+ \ ? printf('+-%s%3d lines: ', a:dashes, a:count)
+ \ : a:prefix
+ endfunction
+
+ function! JavaSyntaxFoldTextExpr() abort
+ " Piggyback on NGETTEXT.
+ let summary = foldtext()
+ return getline(v:foldstart) !~ '/\*\+\s*$'
+ \ ? summary
+ \ : s:LazyPrefix(matchstr(summary, '^+-\+\s*\d\+\s.\{-1,}:\s'),
+ \ v:folddashes,
+ \ (v:foldend - v:foldstart + 1)) .
+ \ getline(v:foldstart + 1)
+ endfunction
-" E120 for "fdt=s:JavaSyntaxFoldTextExpr()" before v8.2.3900.
-setlocal foldtext=JavaSyntaxFoldTextExpr()
+ " E120 for "fdt=s:JavaSyntaxFoldTextExpr()" before v8.2.3900.
+ setlocal foldtext=JavaSyntaxFoldTextExpr()
+endif
" Admit the ASCII dollar sign to keyword characters (JLS-17, ยง3.8):
try
@@ -624,15 +634,25 @@ if !has("vim9script")
finish
endif
-def! s:JavaSyntaxFoldTextExpr(): string
- return getline(v:foldstart) !~ '/\*\+\s*$'
- ? foldtext()
- : printf('+-%s%3d lines: ',
- v:folddashes,
- (v:foldend - v:foldstart + 1)) ..
- getline(v:foldstart + 1)
-enddef
-
-setlocal foldtext=s:JavaSyntaxFoldTextExpr()
-delfunction! g:JavaSyntaxFoldTextExpr
+if exists("g:java_foldtext_show_first_or_second_line")
+ def! s:LazyPrefix(prefix: string, dashes: string, count: number): string
+ return empty(prefix)
+ ? printf('+-%s%3d lines: ', dashes, count)
+ : prefix
+ enddef
+
+ def! s:JavaSyntaxFoldTextExpr(): string
+ # Piggyback on NGETTEXT.
+ const summary: string = foldtext()
+ return getline(v:foldstart) !~ '/\*\+\s*$'
+ ? summary
+ : LazyPrefix(matchstr(summary, '^+-\+\s*\d\+\s.\{-1,}:\s'),
+ v:folddashes,
+ (v:foldend - v:foldstart + 1)) ..
+ getline(v:foldstart + 1)
+ enddef
+
+ setlocal foldtext=s:JavaSyntaxFoldTextExpr()
+ delfunction! g:JavaSyntaxFoldTextExpr
+endif
" vim: sw=2 ts=8 noet sta