// See: https://github.com/scalameta/scalafmt/tags for the latest tags.
version = 3.8.1
runner.dialect = scala3
maxColumn = 80

rewrite {
    rules = [RedundantBraces, RedundantParens, Imports, SortModifiers]
    imports.expand = true
    imports.sort = scalastyle
    redundantBraces.ifElseExpressions = true
    redundantBraces.stringInterpolation = true
}

indent {
    main = 2
    callSite = 2
    defnSite = 2
    extendSite = 4
    withSiteRelativeToExtends = 2
    commaSiteRelativeToExtends = 2
}

align {
    preset = more
    openParenCallSite = false
    openParenDefnSite = false
}

newlines {
    implicitParamListModifierForce = [before,after]
    topLevelStatementBlankLines = [
        {
            blanks = 1
        }
    ]
    afterCurlyLambdaParams = squash
}

danglingParentheses {
    defnSite = true
    callSite = true
    ctrlSite = true
    exclude = []
}

verticalMultiline {
    atDefnSite = true
    arityThreshold = 2
    newlineAfterOpenParen = true
}

comments {
    wrap = standalone
}

docstrings {
    style = "SpaceAsterisk"
    oneline = unfold
    wrap = yes
    forceBlankLineBefore = true
}

project {
  excludePaths = [
    "glob:**target/**",
    "glob:**.metals/**",
    "glob:**.bloop/**",
    "glob:**.bsp/**",
    "glob:**metals.sbt",
    "glob:**.git/**"
  ]
}