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

2750b83fa1

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
This commit is contained in:
Christian Clason
2024-08-22 21:25:51 +02:00
parent 8db8793503
commit 3b32869ced
2 changed files with 49 additions and 21 deletions

View File

@@ -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

View 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 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
" E120 for "fdt=s:JavaSyntaxFoldTextExpr()" before v8.2.3900.
setlocal foldtext=JavaSyntaxFoldTextExpr()
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()
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
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
setlocal foldtext=s:JavaSyntaxFoldTextExpr()
delfunction! g:JavaSyntaxFoldTextExpr
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