Questions about clang-format for specific formatting rules

I just started taking a look at Clang-Format on Windows using clang
3.6 and I have a few questions concerning formatting rules.

1. Is there a way to force constructor member initiailizer lists to
always use 1 line per member? Example:

Foo::Foo()
    : m_member1(1)
    , m_member2(2)
{}

2. The coding standard we use on the project I am involved in requires
that class indentation be relative to the indentation of the access
specifiers. For example:

class Foo
{
    public:
        Foo();
};

Basically if an access specifier is provided, it follows the normal
indent width (4 in this case). Everything *after* the access specifier
is indented relative to the indentation of the specifier before it (so
actually it would be indented twice). If there are no access
specifiers in a class, indentation goes back to the normal 1 indent.

3. When the parameters of a function exceed the length of the line,
I'd like to see a way to make the parameters get their own dedicated
lines indented 1 level from the start of the function header. For
example:

// Priority 1: All fits on one line
void Foo::SomeFunction(int longparam1, int longparam2, int longparam3);

// Priority 2: No room, try 1 carriage return:
void Foo::SomeFunction(
    int longparam1, int longparam2, int longparam3);

// Priority 3: No room for priority 2, so each gets its own line
void Foo::SomeFunction(
    int longparam1,
    int longparam2,
    int longparam3);

4. Is there a way to make nested namespaces follow this formatting style?

namespace Outter {
namespace Inner {

class Foo;

}} // namespace Outter::Inner

Notice the closing braces are collectively placed on the same line.
Also none of the namespaces have indentation.

Thanks in advance!

I just started taking a look at Clang-Format on Windows using clang
3.6 and I have a few questions concerning formatting rules.

1. Is there a way to force constructor member initiailizer lists to
always use 1 line per member? Example:

Foo::Foo()
   : m_member1(1)
   , m_member2(2)
{}

BreakConstructorInitializersBeforeComma: true should do this.

2. The coding standard we use on the project I am involved in requires
that class indentation be relative to the indentation of the access
specifiers. For example:

class Foo
{
   public:
       Foo();
};

Basically if an access specifier is provided, it follows the normal
indent width (4 in this case). Everything *after* the access specifier
is indented relative to the indentation of the specifier before it (so
actually it would be indented twice). If there are no access
specifiers in a class, indentation goes back to the normal 1 indent.

I do not think this is possible. Members get one level of indentation relative to the class scope.

3. When the parameters of a function exceed the length of the line,
I'd like to see a way to make the parameters get their own dedicated
lines indented 1 level from the start of the function header. For
example:

// Priority 1: All fits on one line
void Foo::SomeFunction(int longparam1, int longparam2, int longparam3);

// Priority 2: No room, try 1 carriage return:
void Foo::SomeFunction(
   int longparam1, int longparam2, int longparam3);

// Priority 3: No room for priority 2, so each gets its own line
void Foo::SomeFunction(
   int longparam1,
   int longparam2,
   int longparam3);

You might be able to get close with something like BinPackParameters: false and some value for PenaltyBreakBeforeFirstCallParameter.

When parameters are formatted to one-per-line I think the first parameter will be on the same line as the rest of the declaration and the rest of the parameters are aligned with the first.

4. Is there a way to make nested namespaces follow this formatting style?

namespace Outter {
namespace Inner {

class Foo;

}} // namespace Outter::Inner

Notice the closing braces are collectively placed on the same line.
Also none of the namespaces have indentation.

You can do NamespaceIndentationKind: None, but I don't think you can get the closing braces on the same line.