Можно ли настроить средство форматирования Eclipse для правильного отступа нескольких строк между скобками?

Можно ли настроить (или расширить) средство форматирования eclipse и очистку кода, чтобы добавить отступ, который я ожидаю в следующих примерах:

public static void main(String[] args) {
    String[] numbers = new String[] {
        "one",
        "two",
        "three",
        "four",
    };

    new MessageFormat("{0} {1} {2} {3}").format(
        "this is string one",
        "this is string two",
        "this is string three"
    );

    System.out.println(
        new MessageFormat("{0} {1} {2} {3}").format(
            new String[]{
                "this is string zero",
                "this is string one",
                "this is string two",
                "this is string three"
            }
        )
    );
}

Я поигрался со всеми настройки, которые я могу найти. Параметр «никогда не соединять строки» не дает ему полностью вырезать код, но даже в этом случае все отступы удаляются, и код выглядит следующим образом:

    String[] numbers = new String[] {
    "one",
    "two",
    "three",
    "four",
    };

    new MessageFormat("{0} {1} {2} {3}").format(
    "this is string one",
    "this is string two",
    "this is string three"
    );

    System.out.println(
    new MessageFormat("{0} {1} {2} {3}").format(
    new String[] {
    "this is string zero",
    "this is string one",
    "this is string two",
    "this is string three"
    }
    )
    );

Я обнаружил возможность отключения форматирования таких блоков, как этот:

    // @formatter:off
    String[] numbers = new String[] {
        "one",
        "two",
        "three",
        "four",
    };
    // @formatter:on

Это неплохая работа, за исключением того, что мой код в конечном итоге завален ими, а часть очистки кода "правильный отступ" игнорирует директиву и все равно портит отступы.

Редактировать: Я нашел настройки «Перенос строк» ​​-> «Отступ по умолчанию для обернутых строк» ​​и «Отступ по умолчанию для инициализации массива» и установил их на «1» вместо «0». Это лучше для инициализаторов массива, но по-прежнему не смещает закрывающий паретез, чтобы он соответствовал открывающей скобке, как я хочу:

public static void main(String[] args) {
    String[] numbers = new String[] {
        "one",
        "two",
        "three",
        "four",
    };

    new MessageFormat("{0} {1} {2} {3}").format(
        "this is string one",
        "this is string two",
        "this is string three"
        );

    System.out.println(
        new MessageFormat("{0} {1} {2} {3}").format(
            new String[] {
                "this is string zero",
                "this is string one",
                "this is string two",
                "this is string three"
            }
            )
        );
}
8
задан Stephen Ostermiller 26 July 2013 в 23:45
поделиться