Search code examples
scalaintellij-idea

Intellij code style setting for wrapping on multi line function arguments


The Spark code style requires four character indentation for multi parameter methods. So: the following code -as presently formatted by IJ - is incorrect:

def generateCirclesRdd(sc: SparkContext,
                       nCircles: Int = 3,
                       nTotalPoints: Int = 30,
                       outerRadius: Double): RDD[(Long, Long, Double)] = {

It should apparently be:

def generateCirclesRdd(sc: SparkContext,
    nCircles: Int = 3,
    nTotalPoints: Int = 30,
    outerRadius: Double): RDD[(Long, Long, Double)] = {

Where is this setting in the IJ code style? Screenshot shows what I was able to find.

enter image description here

UPDATE There is a comment about "Tabs and Indents" here it is :

enter image description here

Another Update: @yole has provided a helpful answer. However, I am still left with 2 spaces instead of 4 on the continuation.

For reference, here is the correct/required indentation within Spark. Notice the continuation on method declarations is 4 spaces.

  def train(
      data: RDD[Vector],
      k: Int,
      maxIterations: Int,
      runs: Int,
      initializationMode: String,
      seed: Long): KMeansModel = {

However the continuation on method invocations is only two:

    new KMeans().setK(k)
      .setMaxIterations(maxIterations)
      .setRuns(runs)
      .setInitializationMode(initializationMode)
      .setSeed(seed)
      .run(data)

Solution

  • There is two option that you have to change

    1. Uncheck Method declaration parameters | Align when multiline

    enter image description here

    1. Check other | Alternate indentation for constructor args and parameter declarations with 4 spaces

    enter image description here