可以将Eclipse格式化程序配置为在括号之间正确缩进多行吗?

时间:2012-02-08 01:40:20

标签: java eclipse formatter

可以配置(或扩展)eclipse格式化程序和代码清理,以添加我在以下示例中所期望的缩进:

public static void main(String[] args) {
    String[] numbers = new String[] {
        "one",
        "two",
        "three",
        "four",
    };

    new MessageFormat("{0} {1} {2} {3}").format(
        "this is string one",
        "this is string two",
        "this is string three"
    );

    System.out.println(
        new MessageFormat("{0} {1} {2} {3}").format(
            new String[]{
                "this is string zero",
                "this is string one",
                "this is string two",
                "this is string three"
            }
        )
    );
}

我玩过我能找到的所有设置。 “never join lines”选项使它不会完全屠宰代码,但即使这样,缩进也会被剥离,代码就会出现如下:

    String[] numbers = new String[] {
    "one",
    "two",
    "three",
    "four",
    };

    new MessageFormat("{0} {1} {2} {3}").format(
    "this is string one",
    "this is string two",
    "this is string three"
    );

    System.out.println(
    new MessageFormat("{0} {1} {2} {3}").format(
    new String[] {
    "this is string zero",
    "this is string one",
    "this is string two",
    "this is string three"
    }
    )
    );

我发现能够像这样关闭这些块的格式化:

    // @formatter:off
    String[] numbers = new String[] {
        "one",
        "two",
        "three",
        "four",
    };
    // @formatter:on

这是一个不错的工作,除了我的代码最终乱七八糟,代码清理的“正确的缩进”部分忽略了指令并且无论如何都会弄乱缩进。

编辑:我找到了“Line Wrapping”的设置 - > “包装行的默认缩进”和“数组初始化的默认缩进”,并将它们设置为“1”而不是“0”。这对于数组初始值设定项更好,但仍然不会缩减关闭的parethesis以匹配我想要的方式的左括号:

public static void main(String[] args) {
    String[] numbers = new String[] {
        "one",
        "two",
        "three",
        "four",
    };

    new MessageFormat("{0} {1} {2} {3}").format(
        "this is string one",
        "this is string two",
        "this is string three"
        );

    System.out.println(
        new MessageFormat("{0} {1} {2} {3}").format(
            new String[] {
                "this is string zero",
                "this is string one",
                "this is string two",
                "this is string three"
            }
            )
        );
}

1 个答案:

答案 0 :(得分:1)

您是否检查了换行选项卡。如果为表达式/数组初始化器和函数调用/ Qalified对象分配参数选择“换行所有元素,新行中的每个元素”,我认为你会得到类似的东西