Можно ли пометить часть java-кода в eclipse, чтобы он не был отформатирован автоматически?

Автоматическое форматирование eclipse для Java-кода является блестящим! Вы можете написать страшный код, а затем простой тип CTRL + SHIFT + f - и код поражает.

Но иногда я хочу отметить, что часть кода не будет автоматически отформатирована. Например, с помощью свободного интерфейса:

public void fluentInterfaceJooqDemo() {
    create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
          .from(AUTHOR)
          .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
          .where(BOOK.LANGUAGE.eq("DE"))
          .and(BOOK.PUBLISHED.gt(date("2008-01-01")))
          .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
          .having(count().gt(5))
          .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
          .limit(2)
          .offset(1)
          .forUpdate()
          .of(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME);
}

и после типа CTRL + SHIFT + f

public void fluentInterfaceJooqDemo() {
    create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count()).from(AUTHOR).join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
            .where(BOOK.LANGUAGE.eq("DE")).and(BOOK.PUBLISHED.gt(date("2008-01-01"))).groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
            .having(count().gt(5)).orderBy(AUTHOR.LAST_NAME.asc().nullsFirst()).limit(2).offset(1).forUpdate()
            .of(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME);
}

Однако я ищу какой-то метод для маркировки такого кода non-autoformat, например.

//non-format
public void fluentInterfaceJooqDemo() {
    ...
}

Ответ 1

Я думаю, вы можете использовать @formatter:off и @formatter:on

// @formatter:off
public void fluentIterfaceThingy() { 
...
}
// @formatter:on

Вам может потребоваться включить эту опцию в разделе стиля кода: Window->Preferences->Java->Formatter->Edit->On/Of Tags

Ответ 2

Да, это настраивается в eclipse. И вы можете переопределить ключевые слова включения/выключения.

enter image description here

Ответ 3

Я не уверен, нужна ли дополнительная настройка (у нас есть настраиваемое затмение в нашей компании), но это работает для меня:

//@formatter: off // @formatter: on