Почему Eclipse не снимает фигурные скобки в JavaScript?

Я часами изучал настройки форматирования в Eclipse и не нашел решения этой проблемы:

Видео проблемы

Когда я набираю открывающую фигурную скобку в строке, следующей за строкой if, else или function, конечная фигурная скобка добавляется автоматически, но ни одна из них не соответствует моим правилам форматирования (т. е. фигурные скобки должны быть выровнены с if, else или функциональным текстом).

Как это выглядит:

if (a)
  {
  }

Как это должно выглядеть (и выглядит после запуска форматера):

if (a)
{
}

Я бы списал это на недостаток Eclipse, за исключением одного: при редактировании кода PHP, Java или C++ он работает так, как я хотел; фигурные скобки не имеют отступа соответствующим образом.


person Jon Vance    schedule 25.09.2015    source источник
comment
Я думаю, это поможет вам stackoverflow.com/a/15170355/4025845   -  person Luca    schedule 25.09.2015
comment
Почему бы вам не поместить { в одну строку с if(a)?   -  person James Jithin    schedule 25.09.2015
comment
Я вырос, программируя С++, и стандарт кодирования, который я использую, показан выше. Мне он кажется лучше, прежде всего потому, что это то, на что я смотрел десятилетиями.   -  person Jon Vance    schedule 25.09.2015


Ответы (2)


Это потому, что форматирование Javascript именно такое.

Стандарты заявления if:

if (a) {
  // your code
}

И если вы используете массив объектов, например:

var arr = [
  { prop: 'value', prop2: 5 },
  { prop: 'value', prop2: 5 }
];

Он работает именно так, как было задумано. Взгляните на это руководство по стилю JavaScript.

person Buzinas    schedule 25.09.2015
comment
Eclipse позволяет настроить форматирование так, как мне нравится, как в JavaScript, так и во всех других языках. Почему он будет игнорировать мои настройки форматирования в пользу какого-то стандарта, пока я явно не попрошу его применить форматирование? - person Jon Vance; 25.09.2015

Это просто потому, что форматер не применяется после того, как вы пишете код. Вот как это сделать.

  1. В Eclipse перейдите в Window>Preferences
  2. В разделе JavaScript>Code Style>Formatter создайте файл New Profile.
  3. При создании нового профиля или при редактировании вам будет показано окно для изменения стиля формата. Идите к Braces.
  4. Для Blocks выберите Next Line
  5. Нажмите OK. Подтвердите профиль и нажмите OK.

Теперь, после того, как вы напишете следующее:

if (true)
        {

        }

Используйте средство форматирования, чтобы внести изменения за вас, обычно с помощью Ctrl+Shift+F или из меню с помощью Source>Format. Вы также можете применить форматирование к выбранному фрагменту кода.

Обновлять

Когда у вас есть вышеуказанная настройка, перейдите к Window>Preferences>JavaScript>Editor>Save Actions, включите Perform the selected actions on save и Format source code, что улучшит эту операцию.

person James Jithin    schedule 25.09.2015
comment
Да, я знаю, что могу явно указать Eclipse форматировать в соответствии с моими предпочтениями. Однако во всех других языках фигурные скобки автоматически помещаются в правильное место, когда я их печатаю, а в JavaScript этого не происходит. Это основа моего вопроса. - person Jon Vance; 25.09.2015