Как остановить форматирование Eclipse от размещения всех перечислений в одной строке - PullRequest
99 голосов
/ 13 июля 2011

У меня есть перечисления как:

public static enum Command
{
login,
register,
logout,
newMessage
}

При форматировании файла вывод будет:

public static enum Command 
{
login, register, logout, newMessage
}

Ответы [ 6 ]

192 голосов
/ 03 октября 2012

Ответ @wjans работал нормально для обычных перечислений, но не для перечислений с аргументами. Чтобы немного расширить его ответ, вот настройки, которые предоставили мне наиболее разумное форматирование в Eclipse Juno:

  1. Window> Preferences> Java> Code Style> Formatter
  2. Нажмите Edit
  3. Выберите вкладку Line Wrapping
  4. Выберите декларацию enum treenode
  5. Установите Line wrapping policy на Wrap all elements, every element on a new line (...), так что теперь в скобках указано 3 из 3.
  6. Снимите отметку Force split, even if line shorter than maximum line width (...), поэтому теперь в скобках написано 3 из 3.
  7. Выберите Constants treenode
  8. Чек Force split, even if line shorter than maximum line width

Устанавливает 3 подузла для триода enum в одну и ту же политику переноса и одну и ту же политику принудительного разделения, за исключением триода 3 *, так что ваши перечисления с аргументами будут форматироваться каждый в отдельной строке. Аргументы будут переноситься только в том случае, если они превышают максимальную ширину строки.

Примеры:

@ wjans

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(
        0,
        255,
        0),
    RED(
        255,
        0,
        0)
}

Решение, описанное выше:

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(0, 255, 0),
    RED(255, 0, 0)
}
49 голосов
/ 13 июля 2011

Вы можете указать это в настройках вашего форматера:

  • Предпочтения: Java - Стиль кода - Форматтер
  • Нажмите Редактировать
  • Выберите 'Перенос строки'tab
  • Выберите объявление' enum '-> Константы в поле слева
  • Установить для политики переноса строк значение' Обтекать все элементы, каждый элемент на новой строке '
  • Проверьте 'Force split ...'
10 голосов
/ 13 июля 2011

Это немного уродливо, но если политика вашей компании запрещает вам менять форматер, вы можете просто добавить комментарии в конце строк, которые вы не хотите переносить.

public static enum Command 
{
    login,//
    register,//
    logout,//
    newMessage//
};
5 голосов
/ 13 июля 2011

Это нехорошо, но вы можете отключить форматирование Eclipse для некоторых фрагментов кода ...

// @formatter:off
public static enum Command {
    login,
    register,
    logout,
    newMessage
};
// @formatter:on

эта опция находится в панели Windows-> Настройки-> Java-> Стиль кода-> Форматер-> Правка-> Выкл. / Вкл.

4 голосов
/ 13 июля 2011

Вам необходимо установить политику переноса строк в объявлении enum для «Константы».

Установите политику упаковки на

  • Обернуть все элементы, каждый элемент на новой строке

И

  • Установите флажок «Force Split, даже если строка короче, чем ,,,,,
0 голосов
/ 30 ноября 2018

Просто добавьте последнюю версию Eclipse 2018.9

  1. Window > Preferences > Java > Code Style > Formatter - Edit
  2. Разверните Line Wrapping узел дерева.
  3. Разверните Wrapping settings
  4. Развернуть 'enum' declaration
  5. Редактировать Constants и Constant arguments.

Константы должны быть Wrap all elements, every element on a new line.Постоянные аргументы должны быть Wrap where necessary.

...