如何用eclipse"正确"缩进流畅的界面模式?

tan*_*ens 50 java eclipse indentation

我刚刚为一些流畅的接口创建了一个生成器.现在我有很多代码看起来像这样:

new MyFluentInterface()
    .setFirst( "first" )
    .setSecond( "second" )
    .setThird( "third" )
    .invoke( obj );
Run Code Online (Sandbox Code Playgroud)

我喜欢上面显示的缩进,但我找不到配置eclipse以正确缩进的方法.

eclipse总是像这样缩进:

new MyFluentInterface()
.setFirst( "first" )
.setSecond( "second" )
.setThird( "third" )
.invoke( obj );
Run Code Online (Sandbox Code Playgroud)

我如何配置eclipse,以便缩进这个流畅的界面模式,如我的第一个代码示例所示?

Pas*_*ent 66

使用Eclipse 3.6,这似乎可以通过配置自定义Java>代码样式>格式化程序配置文件来实现.编辑它并转到Line Wrapping选项卡,然后选择Function Call> Qualified invocations.然后,在"限定调用设置"中,配置以下内容:

替代文字

这将(应该)产生预期的结果:

SomeEntity e1 = new SomeEntity.Builder()
    .age(10)
    .amount(10.0d)
    .firstname("foo")
    .lastname("bar")
    .build();
Run Code Online (Sandbox Code Playgroud)

但这显然会影响我个人不喜欢的所有代码.所以我正在使用Eclipse 3.6中的新Off/On标签(编辑配置文件时的最后一个选项卡):

替代文字

并将未按照我想要的格式化的部分包含在内并自行完成:

// @formatter:off
SomeEntity e2 = new SomeEntity.Builder()
    .age(10)
    .amount(10.0d)
    .firstname("foo")
    .lastname("bar")
    .build();
// @formatter:on
Run Code Online (Sandbox Code Playgroud)

选你的毒药:)

  • @seanizer:实际上,上面是[Builder Pattern Eclipse Plugin](http://boss.bekk.no/bpep/)的结果.我喜欢这个小插件,因为它是:) (4认同)
  • 起初我并不认为这有效.我发现它适用于自动格式,但添加了"正确的缩进"以保存操作覆盖并将其拉回.我要提出一个日食错误. (2认同)