Как правильно настроить авто-отступ Eclipse CDT при использовании BOOST_FOREACH?

Я пишу этот крошечный пример C ++ в Eclipse 3.4.1 (CDT 5.0.1):

#include <iostream>
#include <vector>
#include <boost/foreach.hpp>

int foo()
{
  std::vector<int> numbers;
  BOOST_FOREACH(int n, numbers)
  {
    std::cout << n << std::endl;
  }
  std::cout << numbers.size << std::endl;
}

Затем я нажимаю Shift + Ctrl + F, чтобы отформатировать мой код, и он становится:

#include <iostream>
#include <vector>
#include <boost/foreach.hpp>

int foo()
{
    std::vector<int> numbers;
    BOOST_FOREACH(int n, numbers)
{   std::cout << n << std::endl;
}
std::cout << numbers.size << std::endl;
}

Это со стилем кода BSD / Allman. Другие стили, очевидно, изменяют внешний вид отформатированного кода, но ни один не дает правильного отступа.

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

Что я могу сделать, чтобы заставить отступ работать должным образом с BOOST_FOREACH?

14.12.2008 10:38:08
Вы когда-нибудь это исправляли? Плагин Astyle уступает IMO, потому что он выстраивает аргументы функций слишком далеко вправо.
Dave 15.04.2010 13:06:41
Я никогда не решал это. Обратите внимание, что я не работал над этим проектом в более поздних версиях Eclipse.
activout.se 8.05.2010 08:03:20
Можно ли сказать Eclipse, который BOOST_FOREACHдолжен быть отформатирован как whileзаявление?
Jayen 25.10.2011 22:45:32
Жаль, что через 6 лет эта ошибка еще не исправлена.
Amos 3.04.2015 15:24:37
5 ОТВЕТОВ

Э-э ... ты не можешь? Попробуйте следующую версию CDT ...: _ (

0
26.01.2009 21:36:39
Я согласен, комментарий удален. Надо было читать дальше, извинения.
Emile 31.08.2012 14:03:02

Странно, но раньше это работало с CDT 4. Так что, если вам действительно это нужно, я предлагаю вам понизить ваш CDT: - /

1
30.01.2009 15:37:10

Возможно, вы захотите попробовать плагин astyle eclipse . Кажется, это намного лучше, чем стиль затмения по умолчанию в C ++.

2
4.02.2009 22:02:13

Добавьте это в заголовок, используемый вашим кодом:

#ifdef __CDT_PARSER__
    #undef BOOST_FOREACH
    #define BOOST_FOREACH(a, b) for(a; ; )
#endif
3
3.02.2012 20:43:57
В зависимости от того, как ваш проект настроен на сборку (т. Е. Если настройки Eclipse фактически не передаются вашему компилятору), вы также можете установить это в «C / C ++ General-> Paths and Symbols-> Symbols» в свойствах проекта. , Определите символ C ++, от "BOOST_FOREACH (a, b)" до "for (a;;)", и дайте ему возможность переиндексировать.
Sam Hartsfield 27.04.2012 13:55:01

Это все еще сломано в текущем CDT для Кеплера. Но есть ошибка в Bugzilla Eclipse (проверьте его статус здесь ). Со временем это будет исправлено :-)

2
5.04.2014 12:58:45