Как использовать различные переносы строк для строк и других элементов в 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. Также см