Eclipse格式化程序每次都交替格式化(并且不会分割行)

时间:2015-01-27 15:53:52

标签: java eclipse formatter

Eclipse正在以一种方式格式化代码,然后是另一种格式化代码,每次使用时都会交替地反向转发特定的代码。

我在这里做错了什么?

这是第一个州:

public static void main(final String[] args) {
    String dir = System.getenv(EtlConstants.ENVVAR_PROPERTIES_DIR);
    if (dir != null
        && ("\\".equals(dir.charAt(dir.length() - 2)) || "/".equals(dir.charAt(dir.length() - 2)))) {
        dir = dir.substring(0, dir.length() - 1);
    }
}

这与此交替:

public static void main(final String[] args) {
    String dir = System.getenv(EtlConstants.ENVVAR_PROPERTIES_DIR);
    if (dir != null
            && ("\\".equals(dir.charAt(dir.length() - 2)) || "/".equals(dir.charAt(dir.length() - 2)))) {
        dir = dir.substring(0, dir.length() - 1);
    }
}

区别在于if语句的第二行中的选项卡。

我正在尝试让格式化程序在||处包含同一行,但我无法弄清楚为什么它会在这两种状态之间翻转。它显然是两个独立规则的相互作用,但是哪个?

编辑:这是Eclipse Luna 4.4.0。

编辑2:我正在使用 CTRL + s ,因为我已将Eclipse设置为在保存时执行格式化。它显然是导致格式更改的其他Save操作之一:

  • 格式化所有行
  • 整理进口
  • 将控制语句主体转换为阻止
  • 将最终修饰符添加到私有字段
  • 将最终修饰符添加到方法参数
  • 添加缺失' @ Override'注释
  • 添加缺失' @ Override'接口方法实现的注释
  • 添加缺失' @不推荐使用'注释
  • 删除不必要的演员
  • 删除所有行上的尾随空格
  • 正确的缩进

编辑3:我刚删除了最后一次保存操作,它不再导致该行向后和向前跳跃。

非常感谢所有人用 CTRL + SHIFT + f 调用格式化程序 - 因为我意识到我是一直使用 CTRL + s

2 个答案:

答案 0 :(得分:0)

同意@tobias_k(对不起,我无法发表评论)。在 CRTL + Shift + F 之后。它看起来像:

public static void main(final String[] args) {
    String dir = System.getenv(EtlConstants.ENVVAR_PROPERTIES_DIR);
    if (dir != null
            && ("\\".equals(dir.charAt(dir.length() - 2)) || "/".equals(dir
                    .charAt(dir.length() - 2)))) {
        dir = dir.substring(0, dir.length() - 1);
    }
}

eclipse中,格式选项位于Window-> Preferences-> Java-> Code Style-> Formatter下。显示您正在使用的个人资料,然后尝试修改Line Wrapping标签。不确定,但我想你想要修改Binary Expressions

更新:

不知道Luna。我通常使用eclipse 3.2(Callisto)或eclipse 3.6(Helios)。两个版本都允许编辑格式化配置文件。

备注:不允许修改内置配置文件。基于某个内置配置文件创建一个新的,然后修改该配置文件。

我在Helios中展示:

Edit Profile

点击编辑,您将看到修改方法:

Tags

尽管如此。这根本不容易。我无法自动获得你想要的东西。好吧,正如上面@tobias_k评论的那样,我也从不使用它。除非代码真的很糟糕。我总是喜欢自己格式化。

答案 1 :(得分:0)

主要问题的答案是Eclipse格式化程序对代码做了一件事,然后是Eclipse' on save'动作正在做其他事情本质上撤消格式化。