首页 > 解决方案 > intellij 代码格式在方法参数返回后无法正确缩进(kotlin 和 Java)

问题描述

在与上述未正确对齐的方法参数调用后返回时,我们在代码格式化的工作方式上遇到了一些问题)。目前在 AndroidStudio 3.2.1 中,但据我所知,它一直在这样做。这个问题发生在 Kotlin 和 Java 中。

我们不喜欢自动套用格式的功能。

fun behaviourExample() {
    this.methodCall(
        lambda1 = { /*something*/ },
        lambda2 = { /*somethingElse*/ }
    )
        .map { "Line incorrectly indented" }
        .map { "I'd like the lines to be correctly indented" }
}

fun methodCall(lambda1: () -> Unit, lambda2: () -> Unit): String {
    return "otherThing"
}

我们想找到像这样更改自动套用格式的参数:map{}与关闭正确对齐)

fun behaviourExample() {
    this.methodCall(
            lambda1 = { /*something*/ },
            lambda2 = { /*somethingElse*/ }
        )
        .map { "Line correctly indented" }
        .map { "I'd like the lines to be correctly indented" }
}

与此同时,我们正在做的是在 之前返回methodCall,这不是很漂亮,但很有效。

fun behaviourExample() {
    this
        .methodCall(
            lambda1 = { /*something*/ },
            lambda2 = { /*somethingElse*/ }
        )
        .map { "Line correctly indented but I don't like to be forced to add methodCall() in a new line" }
        .map { "I'd like the lines to be correctly indented" }
}

我们怀疑它应该在首选项 -> 代码样式 -> Kotlin 中的某个位置,但我们使用了一堆参数并没有找到它

AndroidStudio 偏好代码风格

上面是自动格式化如何表现的一个例子,但我们的问题是像这样的调用Single.zip()Observable.concat()等等......缩进误导了你可以在链中的哪个位置。所以我们像这样使用它。

Single
    .zip (
        /* parameters */
    )
    .map { /* something */ }

代替

Single.zip (
        /* parameters */
    )
    .map { /* something */ }

感谢您提供任何帮助或线索。

标签: javaandroid-studiointellij-ideakotlincode-formatting

解决方案


您现在使用的格式实际上是根据编码约定应该如何格式化此类代码。如果方法调用的右括号换行,则它与方法调用的开头对齐。没有选项可以缩进 4 个空格。


推荐阅读