Skip to content

Commit 2750b83

Browse files
zzzyxwvutchrisbra
authored andcommitted
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: #15549 Signed-off-by: Aliaksei Budavei <[email protected]> Signed-off-by: Christian Brabandt <[email protected]>
1 parent c75dad0 commit 2750b83

4 files changed

Lines changed: 53 additions & 25 deletions

File tree

runtime/doc/syntax.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*syntax.txt* For Vim version 9.1. Last change: 2024 Aug 13
1+
*syntax.txt* For Vim version 9.1. Last change: 2024 Aug 22
22

33

44
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2135,6 +2135,14 @@ Note that these three variables are maintained in the HTML syntax file.
21352135
Numbers and strings can be recognized in non-Javadoc comments with >
21362136
:let g:java_comment_strings = 1
21372137
2138+
When 'foldmethod' is set to "syntax", blocks of code and multi-line comments
2139+
will be folded. No text is usually written in the first line of a multi-line
2140+
comment, making folded contents of Javadoc comments less informative with the
2141+
default 'foldtext' value; you may opt for showing the contents of a second
2142+
line for any comments written in this way, and showing the contents of a first
2143+
line otherwise, with >
2144+
:let g:java_foldtext_show_first_or_second_line = 1
2145+
21382146
Trailing whitespace characters or a run of space characters before a tab
21392147
character can be marked as an error with >
21402148
:let g:java_space_errors = 1

runtime/syntax/java.vim

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
" Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com>
44
" Former Maintainer: Claudio Fleiner <[email protected]>
55
" Repository: https://github.com/zzzyxwvut/java-vim.git
6-
" Last Change: 2024 Jul 30
6+
" Last Change: 2024 Aug 22
77

88
" Please check :help java.vim for comments on some of the options available.
99

@@ -39,17 +39,27 @@ else
3939
endfunction
4040
endif
4141

42-
function! JavaSyntaxFoldTextExpr() abort
43-
return getline(v:foldstart) !~ '/\*\+\s*$'
44-
\ ? foldtext()
45-
\ : printf('+-%s%3d lines: ',
46-
\ v:folddashes,
47-
\ (v:foldend - v:foldstart + 1)) .
48-
\ getline(v:foldstart + 1)
49-
endfunction
42+
if exists("g:java_foldtext_show_first_or_second_line")
43+
function! s:LazyPrefix(prefix, dashes, count) abort
44+
return empty(a:prefix)
45+
\ ? printf('+-%s%3d lines: ', a:dashes, a:count)
46+
\ : a:prefix
47+
endfunction
48+
49+
function! JavaSyntaxFoldTextExpr() abort
50+
" Piggyback on NGETTEXT.
51+
let summary = foldtext()
52+
return getline(v:foldstart) !~ '/\*\+\s*$'
53+
\ ? summary
54+
\ : s:LazyPrefix(matchstr(summary, '^+-\+\s*\d\+\s.\{-1,}:\s'),
55+
\ v:folddashes,
56+
\ (v:foldend - v:foldstart + 1)) .
57+
\ getline(v:foldstart + 1)
58+
endfunction
5059

51-
" E120 for "fdt=s:JavaSyntaxFoldTextExpr()" before v8.2.3900.
52-
setlocal foldtext=JavaSyntaxFoldTextExpr()
60+
" E120 for "fdt=s:JavaSyntaxFoldTextExpr()" before v8.2.3900.
61+
setlocal foldtext=JavaSyntaxFoldTextExpr()
62+
endif
5363

5464
" Admit the ASCII dollar sign to keyword characters (JLS-17, §3.8):
5565
try
@@ -624,15 +634,25 @@ if !has("vim9script")
624634
finish
625635
endif
626636

627-
def! s:JavaSyntaxFoldTextExpr(): string
628-
return getline(v:foldstart) !~ '/\*\+\s*$'
629-
? foldtext()
630-
: printf('+-%s%3d lines: ',
631-
v:folddashes,
632-
(v:foldend - v:foldstart + 1)) ..
633-
getline(v:foldstart + 1)
634-
enddef
635-
636-
setlocal foldtext=s:JavaSyntaxFoldTextExpr()
637-
delfunction! g:JavaSyntaxFoldTextExpr
637+
if exists("g:java_foldtext_show_first_or_second_line")
638+
def! s:LazyPrefix(prefix: string, dashes: string, count: number): string
639+
return empty(prefix)
640+
? printf('+-%s%3d lines: ', dashes, count)
641+
: prefix
642+
enddef
643+
644+
def! s:JavaSyntaxFoldTextExpr(): string
645+
# Piggyback on NGETTEXT.
646+
const summary: string = foldtext()
647+
return getline(v:foldstart) !~ '/\*\+\s*$'
648+
? summary
649+
: LazyPrefix(matchstr(summary, '^+-\+\s*\d\+\s.\{-1,}:\s'),
650+
v:folddashes,
651+
(v:foldend - v:foldstart + 1)) ..
652+
getline(v:foldstart + 1)
653+
enddef
654+
655+
setlocal foldtext=s:JavaSyntaxFoldTextExpr()
656+
delfunction! g:JavaSyntaxFoldTextExpr
657+
endif
638658
" vim: sw=2 ts=8 noet sta

runtime/syntax/testdir/dumps/java_enfoldment_00.dump

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
| +0#0000e05#a8a8a8255@1>/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|o|l|d|e|n|a|b|l|e| |f|o|l|d|c|o|l|u|m|n|=|2| |f|o|l|d|m|e|t|h|o|d|=|s|y|n|t|a|x| +0#0000000&@4
2-
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
2+
| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|f|o|l|d|t|e|x|t|_|s|h|o|w|_|f|i|r|s|t|_|o|r|_|s|e|c|o|n|d|_|l|i|n|e| |=| |1| +0#0000000&@5
33
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
44
|++0#0000e05#a8a8a8255| |+|-@1| |1|6| |l|i|n|e|s|:| |@|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|{|-@39
55
| @1|c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|F|o|l|d|i|n|g|T|e|s|t|s| |{| @52

runtime/syntax/testdir/input/java_enfoldment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// VIM_TEST_SETUP setlocal foldenable foldcolumn=2 foldmethod=syntax
2-
2+
// VIM_TEST_SETUP let g:java_foldtext_show_first_or_second_line = 1
33

44
@SuppressWarnings({
55
"""

0 commit comments

Comments
 (0)