Как использовать различные переносы строк для строк и других элементов в Eclipse для Java

Я хотел бы использовать перенос строки после оператора для строк и перенос строки перед оператором для других элементов (чисел, пользовательских объектов,..) в Eclipse для Java.

При добавлении чисел с разными знаками операторы важнее для меня, чем числа. Было бы неплохо иметь операторов впереди, чтобы лучше прочитать утверждение:

A.

int foo =  baaa
           + veryveryveryloooooongexpression
           - shortexpression
           + anotherexpression;

против

B.

int foo =  baaa +
           veryveryveryloooooongexpression -
           shortexpression +
           anotherexpression;

С другой стороны, при добавлении строк оператор просто используется для продолжения строки, а элементы строки более важны для меня. Оператор в конце строки дает подсказку, что что-то происходит в следующей строке. Поэтому я хотел бы использовать перенос строки после оператора для строк:

B.

String message = "Would you like to use line wrapping at " + position +
                 " ? If you want to keep that behavior press Enter."

против

A.

 String message = "Would you like to use line wrapping at " + position
                  +" ? If you want to keep that behavior press Enter."

Статьи по Теме:

(В некоторых случаях, конечно, может быть лучше улучшить код и использовать одну строку, использовать String.format(...) или использовать String Builder. Вопрос здесь не в этом.)

Как я могу применить различные настройки переноса строк A.(перед оператором) и B.(после оператора) для двух разных случаев (первый элемент - строка, а первый - что-то еще) в Eclipse? Есть ли какие-то настройки по умолчанию, которые я не видел? Есть ли плагин Eclipse, который может это сделать?

(Еще несколько комментариев:

  • Изменить: Следующий комментарий действителен только для Eclipse 4.4.2 (Luna) и уже исправлен в Eclipse 4.5 (Mars):

Я не получил правильную работу переноса после оператора (B.) при переносе аргумента String внутри вызова функции, даже если бы я хотел применить его в обоих случаях. Я включил параметр "Обтекать перед оператором" для бинарных выражений и отключил общий параметр "Никогда не объединять уже перенесенные строки". Тем не менее, оператор + в следующем примере появляется в следующей строке. Я подал отчет об ошибке в https://bugs.eclipse.org/bugs/show_bug.cgi?id=466919.

    statusBuilder.append("This set is not yet present in the database!\n"
                    + "You can save it by hitting the 'Save' button below.\n");

  • Если я нажимаю Return в середине строки, затмение правильно переносит строку до или после оператора, в зависимости от настройки "Обтекать перед оператором" для двоичных выражений.

  • Модуль контрольного стиля Whitespace=> Оператор Wrap также не поддерживает дополнительные настройки для конкатенации строк.

)

2 ответа

Решение

Я просто нашел другой вариант: используйте "+ //" в конце каждой строки:

String message = "Would you like to use line wrapping at " + position + //
             " ? If you want to keep that behavior press Enter."

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

//@formatter:off
String message = "Would you like to use line wrapping at " + position +
                 " ? If you want to keep that behavior press Enter."
//@formatter:on

Функции включения / выключения должны быть включены. В настройках Eclipse: Java > Стиль кода> Форматировщик. Нажмите кнопку "Редактировать", "Выкл. / Вкл. Теги", отметьте "Включить теги Выкл. / Вкл."

Эта проблема была исправлена ​​в версии 4.11 M1. Также см

https://bugs.eclipse.org/bugs/show_bug.cgi?id=543079

Другие вопросы по тегам