scalameta / scalafmt

Code formatter for Scala
http://scalameta.org/scalafmt
Apache License 2.0
1.42k stars 276 forks source link

Blank lines are not removed in case of single import line #3631

Closed andrew-selvia closed 1 year ago

andrew-selvia commented 1 year ago

Configuration (required)

newlines.topLevelStatementBlankLines = [{ blanks = -1 }]
runner.dialect = scala3
version = 3.7.14

Command-line parameters (required)

No special parameters; just calling scalafmt as installed via Coursier:

scalafmt A.scala

Steps

Given code like this:

package org.scalafmt

import scala.*

object A

Problem

Scalafmt formats code like this:

package org.scalafmt

import scala.*

object A

Expectation

I would like the formatted output to look like this:

package org.scalafmt

import scala.*
object A

Workaround

I've found that by adding a second import statement:

package org.scalafmt

import scala.*
import scala.*

object A

the code is formatted as expected:

package org.scalafmt

import scala.*
import scala.*
object A
kitbellew commented 1 year ago

please take a look at the minBreaks parameter: https://scalameta.org/scalafmt/docs/configuration.html#newlinestoplevelstatementblanklines

andrew-selvia commented 1 year ago

Thanks @kitbellew!

For anyone who stumbles upon this, here's the solution:

newlines.topLevelStatementBlankLines = [{
  blanks = -1
  minBreaks = 0
}]
runner.dialect = scala3
version = 3.7.14