I just created a generator for some fluent interfaces. Now I have lots of code looking like this:
new MyFluentInterface()
.setFirst( "first" )
.setSecond( "second" )
.setThird( "third" )
.invoke( obj );
I like the indentation shown above, but I can't find a way to configure eclipse to indent this correctly.
eclipse always indents like this:
new MyFluentInterface()
.setFirst( "first" )
.setSecond( "second" )
.setThird( "third" )
.invoke( obj );
How can I configure eclipse so that it indents this fluent interface pattern as shown in my first code example?
With Eclipse 3.6, this seems doable by configuring your custom Java > Code Style > Formatter profile. Edit it and go to the Line Wrapping tab and select Function Call > Qualified invocations. Then, in the Settings for qualified invocations, configure things like this:
This will (should) produce the expected result:
SomeEntity e1 = new SomeEntity.Builder()
.age(10)
.amount(10.0d)
.firstname("foo")
.lastname("bar")
.build();
But this will obviously affect all the code, which I personally don't like. So I'm using the new Off/On Tags from Eclipse 3.6 (last tab when editing a profile):
And enclose the parts that don't get formatted as I want and do it myself:
// @formatter:off
SomeEntity e2 = new SomeEntity.Builder()
.age(10)
.amount(10.0d)
.firstname("foo")
.lastname("bar")
.build();
// @formatter:on
Pick your poison :)