Comments (10)
I'm in favor of 4 as well not because of Java similarity but because I find
aFunctionWithAFinalFunctionArgument(
a, b, c, d, e) {
doOtherStuff()
}
more readable than
aFunctionWithAFinalFunctionArgument(
a, b, c, d, e) {
doOtherStuff()
}
from ktfmt.
Personally, I'm in favor of 4, because of its similarity to Java (and because I'm more used to it).
from ktfmt.
My Android Studio copy seems to use 4, as in:
token(
token,
Doc.Token.RealOrImaginary.REAL,
plusIndentCommentsBefore,
/* breakAndIndentTrailingComment */ Optional.empty())
val a = 324567 +
234567890 + 2345678
I suggest keeping 4 for now in that case.
from ktfmt.
Do we have any discussion going here? If not, we should close.
We do have double continuation in some cases now:
makeCall(
arg1, arg2, arg3)
.doMore()
from ktfmt.
For reference, at Uber we use 2 indent, 4 continuation indent in Kotlin.
from ktfmt.
The official kotlin style guide uses 2 for both, doesn't seem like continuation indent is treated differently (anymore)
from ktfmt.
The official Kotlin Intellij style guide has this reasoning for no continuation indents:
https://kotlinlang.org/docs/reference/code-style-migration-guide.html#differences-between-kotlin-coding-conventions-and-intellij-idea-default-code-style
At Google, we have been using this style, and encouraged ktlint to enforce it as well. It is a more self-consistent style, where all blocks have no continuation indent, and the closing brace or paren is on a separate line.
from ktfmt.
Hi @bethcutler, thanks for helping!
several Kotlin constructions look a bit awkward when they are formatted this way
I don't get this main explanation, probably due to lack of imagination. Do you have any idea what constructs they might mean? Currently, I think @cgrushko did a great job making all those calling chains with lambdas and what not work well for these cases, but I'd be happy to see some ugly examples and change my mind.
from ktfmt.
I think the image included in the link I posted shows some decent examples; e.g. class members are all indented the same amount, regardless of if they are defined in the constructor or not. Another example I like is that chained method calls are indented the same amount as statements in a block.
from ktfmt.
Closing this is both an old discussion and because now we have an option to set this up
https://github.com/facebook/ktfmt/blob/main/core/src/main/java/com/facebook/ktfmt/format/FormattingOptions.kt#L47
from ktfmt.
Related Issues (20)
- 0.47 trailing comma changes cause class definitions to be formatted weirdly HOT 2
- Formatting isn't idempotent, and repeated invocations produce bad comment formatting HOT 13
- ktfmt version 0.47 incompatible with spotless HOT 2
- Feature request: GraalVM artifacts HOT 1
- add trailing comma support to other non-google styles HOT 10
- Indentation level should be a command-line argument HOT 2
- Android Studio / IDEA plugin yields different results than running ktfmt HOT 11
- Treat trailing Elvis operator as part of a call chain HOT 2
- Adding target jar to releases HOT 2
- Weird lambda formatting when wrapping long line HOT 3
- Intellij Plugin set to Google (internal) always removes trailing commas HOT 1
- Lambdas following a statement can be treated as lambda arguments, breaking syntax HOT 1
- No artifacts were released for v0.48 and v0.49 HOT 4
- Trailing comma gets removed if there is only one parameter and it is formatted to be on its own line HOT 2
- ktfmt doesn't seem to work in IJ 2024.1.1 HOT 6
- Is ktfmt used on itself? HOT 5
- Misspelled flags in CLI can cause user data loss HOT 1
- How can I config Intellij plugin? HOT 2
- error: did not generate token "context" HOT 3
- Google style with trailing comma does not use maxWidth correctly HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ktfmt.