0
0
mirror of https://github.com/vim/vim.git synced 2025-10-20 08:14:18 -04:00

runtime(java): Fold adjacent "import" declarations

Also, distinguish (by abbreviating their names) and manage
foldable kinds of syntax items: blocks of code ("b"), plain
comments ("c"), Javadoc comments ("d"), adjacent "import"
declarations ("i").  Fold all qualifying items by default;
otherwise, do not fold items of explicitly delisted kinds.
For example,
------------------------------------------------------------
	let g:java_ignore_folding = "bcdi"
------------------------------------------------------------

Resolves zzzyxwvut/java-vim#12.

closes: #18492

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Aliaksei Budavei
2025-10-08 16:45:28 +00:00
committed by Christian Brabandt
parent 97d1255558
commit 143686b3c4
22 changed files with 438 additions and 258 deletions

View File

@@ -1,9 +1,29 @@
// VIM_TEST_SETUP setlocal foldenable foldcolumn=2 foldmethod=syntax
// VIM_TEST_SETUP setlocal fen fdc=2 fdl=8 fdm=syntax
// VIM_TEST_SETUP let g:java_foldtext_show_first_or_second_line = 1
// VIM_TEST_SETUP let g:java_highlight_java_lang = 1
// VIM_TEST_SETUP let g:java_ignore_folding = "x"
// VIM_TEST_SETUP let g:java_lookbehind_byte_counts = {'javaBlock': -1}
// VIM_TEST_SETUP highlight link javaBlockOtherStart Structure
// VIM_TEST_SETUP highlight link javaBlockStart Todo
/***/ import java.lang.Comparable; /*
import java.lang.Object;
import java.lang.String;
*/
import java.lang.String;
import java.lang.Comparable; /***/
import java.lang.Object; // //
import java.lang.String; /***/
import java.util.function.Function;
@SuppressWarnings({
"""
bespoke
@@ -24,11 +44,14 @@
"""
})
class FoldingTests {
interface Foldenable
interface Foldable
{
}
static {
String import$ = """
import java.lang.String;
""";
new Object() {
{
{
@@ -58,12 +81,12 @@ out: {
}
}
/*\\\*/ {
(new java.util.function.Function<Object, Object>() {
(new Function<Object, Object>() {
/**
* {@inheritDoc} */
public Object apply(Object o) { return o; };
}).apply(
(new java.util.function.Function<Object, Object>() {
(new Function<Object, Object>() {
/** {@inheritDoc}
*/
public Object apply(Object o) { return o; };
@@ -118,5 +141,5 @@ out: {
// {
// }
/* 122|..........................................................................................*/ interface Foldenable {
/* 120|..........................................................................................*/ interface Foldable {
}

View File

@@ -1,9 +1,29 @@
// VIM_TEST_SETUP setlocal nofoldenable
// VIM_TEST_SETUP let g:java_mark_braces_in_parens_as_errors = 1
// VIM_TEST_SETUP setlocal fen fdc=2 fdl=8 fdm=syntax
// VIM_TEST_SETUP let g:java_highlight_java_lang = 1
// VIM_TEST_SETUP let g:java_ignore_folding = "bcdi"
// VIM_TEST_SETUP let g:java_lookbehind_byte_counts = {'javaBlock': -1}
// VIM_TEST_SETUP let g:java_mark_braces_in_parens_as_errors = 1
// VIM_TEST_SETUP highlight link javaBlockOtherStart Structure
// VIM_TEST_SETUP highlight link javaBlockStart Todo
/***/ import java.lang.Comparable; /*
import java.lang.Object;
import java.lang.String;
*/
import java.lang.String;
import java.lang.Comparable; /***/
import java.lang.Object; // //
import java.lang.String; /***/
import java.util.function.Function;
@SuppressWarnings({
"""
bespoke
@@ -24,11 +44,14 @@
"""
})
class UnfoldingTests {
interface Unfoldenable
interface Unfoldable
{
}
static {
String import$ = """
import java.lang.String;
""";
new Object() {
{
{
@@ -58,12 +81,12 @@ out: {
}
}
/*\\\*/ {
(new java.util.function.Function<Object, Object>() {
(new Function<Object, Object>() {
/**
* {@inheritDoc} */
public Object apply(Object o) { return o; };
}).apply(
(new java.util.function.Function<Object, Object>() {
(new Function<Object, Object>() {
/** {@inheritDoc}
*/
public Object apply(Object o) { return o; };
@@ -118,5 +141,5 @@ out: {
// {
// }
/* 122|........................................................................................*/ interface Unfoldenable {
/* 120|........................................................................................*/ interface Unfoldable {
}