Параметры Eclipse Formatter для '.' Выравнивание (Java)
Я хотел бы, чтобы Eclipse отформатировал код, который вызывает строитель следующим образом:
final Item item = new Item.Builder()
.name("something")
.field("a value")
.build();
то есть. выравнивание по '.' символ из первой строки. Я могу вручную убедить Eclipse сделать это, совместив вторую строку (.name( "что-то" )), но любое автоматическое форматирование уничтожает это.
Я играл со всеми различными вариантами форматирования, которые я могу найти в Eclipse, и ни один из них, похоже, не делает то, что я хочу. Любые идеи о том, есть ли варианты форматирования для выкладки кода таким образом?
Ответы
Ответ 1
Выравнивание точно в точке точки невозможно, но разрывы строк для каждого вызова метода могут выполняться автоматически. Я создал этот вывод
void format() {
Test test = new Test()
.a() // this call can also be configured to be one line above
.b()
.c();
}
выбрав вкладку "Укладка линии" в настройках форматирования, выбрав "Функциональные вызовы", "Квалифицированные вызовы", переключив политику переноса строк в поле со списком на Оберните все элементы, каждый элемент в новой строке и, наконец, проверка флажка Force split, даже если линия меньше максимальной ширины линии.
Вы можете получить первый вызов метода в первой строке, выбрав вместо этого политику "... кроме первого элемента".
Ответ 2
Создайте новый форматир:
Properties -> Formater -> Configure Workspace Settings -> New
то на вкладке Off/On Tags
установите Enable Off/On tags
А затем просто окружайте свой код следующим образом:
/* @formatter:off */
final Item item = new Item.Builder()
.name("something")
.field("a value")
.build();
/* @formatter:on */
Ответ 3
Я думаю, вы можете добиться этого, используя "jalopy". Для Maven есть плагин, если вы используете Maven.
В случае, если вы хотите использовать jalopy, тогда параметр, который вас интересует, будет <methodCallChain>
в элементе alignment
, значение которого вы должны установить на true
.
Отредактировано: плагин maven jalopy. Убедитесь, что вы нацеливаете фазу clean
и используете цель format