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操作之一:
编辑3:我刚删除了最后一次保存操作,它不再导致该行向后和向前跳跃。
非常感谢所有人用 CTRL + SHIFT + f 调用格式化程序 - 因为我意识到我是一直使用 CTRL + s 。
答案 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中展示:
点击编辑,您将看到修改方法:
尽管如此。这根本不容易。我无法自动获得你想要的东西。好吧,正如上面@tobias_k评论的那样,我也从不使用它。除非代码真的很糟糕。我总是喜欢自己格式化。
答案 1 :(得分:0)
主要问题的答案是Eclipse格式化程序对代码做了一件事,然后是Eclipse' on save'动作正在做其他事情本质上撤消格式化。