Я очень расстроен правилами форматирования Eclipse для серии квалифицированных вызовов (т.е. стиля шаблона Builder). Например, вот мое предпочтительное форматирование для некоторого кода, который создает новый объект Apache Commons CLI Options
:
Options options = new Options()
.addOption(OPTION_HELP_SHORT, OPTION_HELP, false, "print usage information")
.addOption(OPTION_VERSION_SHORT, OPTION_VERSION, false,
"print version and exit")
.addOption(OptionBuilder.withLongOpt(OPTION_PROPERTIES)
.hasArg()
.withArgName("FILE")
.withType(File.class)
.withDescription("specify a user properties file")
.create());
I.e., параметры завернуты и отступы, если необходимо, и все квалифицированные вызовы, кроме первого, если это необходимо, обернуты и отступы, если их больше одного. Если список параметров обертывается внутри квалифицированного вызова, вызов сначала должен быть завершен.
Форматирование по умолчанию в Eclipse ( "Wrap only when needed" для аргументов и invocations) приводит к следующему беспорядку:
Options options = new Options().addOption(
OPTION_HELP_SHORT, OPTION_HELP, false, "print usage information")
.addOption(OPTION_VERSION_SHORT, OPTION_VERSION, false,
"print version and exit").addOption(
OptionBuilder.withLongOpt(OPTION_PROPERTIES).hasArg().withArgName(
"FILE").withType(File.class).withDescription(
"specify a user properties file").create());
Переход в "Стиль Java-кода → Formatter → Line Wrapping" и параметр переноса строки на "Обертка всех элементов, кроме первого элемента, если это не необходимо" для выходов:
Options options = new Options().addOption(
OPTION_HELP_SHORT, OPTION_HELP, false, "print usage information")
.addOption(OPTION_VERSION_SHORT, OPTION_VERSION, false,
"print version and exit")
.addOption(
OptionBuilder.withLongOpt(OPTION_PROPERTIES).hasArg().withArgName(
"FILE").withType(File.class).withDescription(
"specify a user properties file").create());
Мне не нравится, что выражение OptionBuilder
не обернуто или что "FILE"
обертывается без обертывания withArgName
.
Изменение отступов на "Отступ по столбцу" дает:
Options options = new Options().addOption(OPTION_HELP_SHORT, OPTION_HELP,
false, "print usage information")
.addOption(OPTION_VERSION_SHORT,
OPTION_VERSION, false,
"print version and exit")
.addOption(
OptionBuilder.withLongOpt(
OPTION_PROPERTIES)
.hasArg()
.withArgName("FILE")
.withType(File.class)
.withDescription(
"specify a user properties file")
.create());
Разрывает линии, где я бы предпочел, но слишком сильно переместил вещи вправо.
Есть ли способ убедить Eclipse применить мой предпочтительный стиль форматирования или нечто более близкое к нему, чем любое из вышеперечисленных?