2015-01-27 1 views
1

Eclipse - это код форматирования в одну сторону, а затем другой, перебрасывая отдельные биты кода назад и вперед попеременно каждый раз, когда он используется.Формат Eclipse форматирует каждый раз каждый раз (и не разделяет строку)

Что я здесь сделал неправильно?

Вот первое состояние:

public static void main(final String[] args) { 
    String dir = System.getenv(EtlConstants.ENVVAR_PROPERTIES_DIR); 
    if (dir != null 
     && ("\\".equals(dir.charAt(dir.length() - 2)) || "/".equals(dir.charAt(dir.length() - 2)))) { 
     dir = dir.substring(0, dir.length() - 1); 
    } 
} 

и это чередуется с этим:

public static void main(final String[] args) { 
    String dir = System.getenv(EtlConstants.ENVVAR_PROPERTIES_DIR); 
    if (dir != null 
      && ("\\".equals(dir.charAt(dir.length() - 2)) || "/".equals(dir.charAt(dir.length() - 2)))) { 
     dir = dir.substring(0, dir.length() - 1); 
    } 
} 

Разница вкладка во второй строке, если заявление.

Я пытаюсь получить форматирование, чтобы обернуть ту же строку и в ||, но я не могу понять, почему он переливается между этими двумя состояниями. Очевидно, это взаимодействие двух отдельных правил, но что?

EDIT: Это с Eclipse Luna 4.4.0.

EDIT 2: Я использую CTRL +сек, потому что я установил Eclipse, чтобы сделать формат при сохранении. Это, очевидно, один из других Save действий, которые вызывают формат изменение:

  • формата всех линии
  • организовать импорт
  • конвертированы управление заявлением органов блокировать
  • добавить окончательный модификатор к закрытым полям
  • добавить окончательный модификатор метод параметры
  • добавить отсутствующие аннотаций «» @Override
  • добавить недостающие аннотации «» @Override для реализации методов интерфейса
  • добавить недостающие аннотаций «@Deprecated»
  • удалить ненужные слепков
  • удалить завершающие пробелы на всех линиях
  • правильно отступы

EDIT 3: Я только что удалили последний Сохраните действие, и это больше не приводит к тому, что эта линия скатывается назад и вперед.

Так спасибо всем вам люди, ссылающихся форматера с CTRL +SHIFT + ф - что коммутируемой свет, потому что я понял, что я использовал CTRL +сек все время.

+0

Невозможно воспроизвести. Для меня он отбрасывает '&&' как во втором коде, но также разделяет длинную строку (во 2-й «charAt', а не на' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' , ИМХО, это выглядит ужасно. Я использую только автоформат, чтобы исправить полностью испорченный код. –

+0

Невозможно воспроизвести в Eclipse Kepler SR1. Окно> Настройки> Java> Стиль кода> Formatter> Изменить ...> Обтекание строк> * Отступ по умолчанию для завернутых строк * и * Никогда не присоединяйте уже завернутые строки * и * Предпочитаете обертывание внешних выражений * – gknicker

ответ

0

Согласен с @tobias_k (извините, я не могу комментировать). После CRTL + Shift + F.Это выглядит следующим образом:

public static void main(final String[] args) { 
    String dir = System.getenv(EtlConstants.ENVVAR_PROPERTIES_DIR); 
    if (dir != null 
      && ("\\".equals(dir.charAt(dir.length() - 2)) || "/".equals(dir 
        .charAt(dir.length() - 2)))) { 
     dir = dir.substring(0, dir.length() - 1); 
    } 
} 

В eclipse, параметры форматирования находятся под Window-> Настройки-> Java-> Код Стиль-> Formatter. Покажите профиль, который вы используете, и попробуйте изменить вкладку Line Wrapping. Не уверен, но я думаю, вы хотите изменить Binary Expressions.

UPDATE:

Не знаю, о Luna. Обычно я работаю над eclipse 3.2 (Callisto) или eclipse 3.6 (Helios). Обе версии допускают редактирование профиля форматирования.

Примечание: Не разрешено изменять встроенный профиль. Создайте новый, основанный на определенном встроенном профиле, а затем измените его.

я показываю в Helios:

Edit Profile

Нажмите на Edit, и вы увидите способ изменить:

Tags

Тем не менее. Это совсем не просто. Я не могу получить то, что вы хотите автоматически. Ну, как уже было сказано @tobias_k, я никогда не использую его. Если код действительно ужасный. Я всегда предпочитаю форматировать сам.

+0

Как вы хотите видеть профиль? Экспорт XML огромен, и на скриншоте ничего не отображается, кроме выбранного в данный момент параметра. Во всяком случае, у меня «Никогда не присоединяй уже завернутые строки», «Предположите обертывание внешних выражений», а «Двоичные выражения» настроены на перенос, где необходимо, обернуть перед оператором и отступом на один. – Adam

+0

@Adam, я обновил ответ. Однако, не легко получить то, что вы хотите. – Albert

+0

извините, но я не вижу этих изображений - я предполагаю, что они являются изображениями. Я просто потратил час, сравнивая «встроенную» конфигурацию с моим собственным, и я не мог найти ничего, что изменило бы его. – Adam

0

Ответ на основной вопрос заключается в том, что форматировщик Eclipse выполняет одну вещь с кодом, а затем действия Eclipse «save» делают что-то еще, что существенно отменяет форматирование.

 Смежные вопросы

  • Нет связанных вопросов^_^