如何强制 Eclipse Mars 4.5 格式化程序不加入已经换行的行?

How to force the Eclipse Mars 4.5 formatter not to join already wrapped lines?

我刚刚从 eclipse Kepler 转移到 eclipse Mars,我的 Java 格式化程序似乎不再以同样的方式运行。

我曾经能够做到以下几点:

object
    .method1()
    .method2()
    .method3();

格式化程序会保留我的代码。但是自从我改成eclipse mars之后,一切都被包裹在一行中。

我已经验证了格式化程序,但我仍然选中了 "Never join already wrapped lines" 选项。我的项目不使用有关 eclipse 格式化程序的特定设置。我尝试从头开始重新创建格式化程序,结果是一样的。

如何强制 eclipse 不加入这些行?

谢谢

我找到了解决方案:我选择了所有特定元素(注释、Class 声明等)并定义了 Wrap where necessary 而不是我通常使用的 Do not wrap。然后我将 maximum line width 设置为一个高值,这样 Wrap when necessary 就不会真正包装任何东西。这似乎足以让我不加入已经换行的行并将格式化程序的默认行为保持为 "do not wrap".

编辑:尽管这是手头问题的解决方案,但我在 Eclipse Mars 的格式化程序方面遇到了更多问题,这让我回到了 Kepler。我试过 Luna,它似乎没有同样的问题。我可能会切换到 Luna。

编辑:我切换到 Luna,一切正常

编辑:我尝试了新的 Mars.1,尽管我没有完全相同的格式,但修复了很多错误,这对我来说已经足够了开始将它用于某些项目。我可能会在适当的时候将我所有的项目都切换到那里。

将此行添加到您的 profile.xml 或将 属性 设置为 false(如果它已经存在)。

<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>

可以找到样本 xml here