3

在 scala 中使用 scalafmt 并在我的.scalafmt.conf文件中包含以下内容:

style = default
maxColumn = 120
continuationIndent.callSite = 2
continuationIndent.defnSite = 2
align.openParenDefnSite = false
align.openParenCallSite = false
danglingParentheses = true
indentOperator = spray
project.excludeFilters = [".*\\.sbt"]
rewrite.rules = [RedundantBraces, RedundantParens, SortModifiers, prefercurlyfors]
unindentTopLevelOperators = true
importSelectors = singleLine
spaces.afterKeywordBeforeParen = true
lineEndings = unix
newlines.penalizeSingleSelectMultiArgList = false
newlines.alwaysBeforeElseAfterCurlyIf = false
binPack.literalArgumentLists = false
runner.optimizer.forceConfigStyleMinArgCount = 1

它目前从以下位置对齐大小写箭头标记:

object Object {
  def f(s: String): Int = s match {
    case "a" => 1
    case "b" | "c" | "d" => 2
    case "e"=> 3
    case _  => 4
  }
}

对此:

object Object {
  def f(s: String): Int = s match {
      case "a"             => 1
      case "b" | "c" | "d" => 2
      case "e"             => 3
      case _               => 4
  }
}

我不希望代码在箭头上对齐,以最大限度地减少拉取请求中的空白噪音,尤其是在重命名一行时,这会改变整个块的缩进级别。

阅读scalafmt 文档我只发现了默认情况:

align.tokens默认值:[caseArrow]

对齐标记是一对代码,它是标记运算符和所有者的字符串文字,所有者是拥有该标记的最近树节点的类型。如果没有提供所有者,则将匹配所有树种。

x match {
  case 1  => 1 -> 2
  case 11 => 11 -> 22
}

此示例的配置

align.tokens = [{code = "=>", owner = "Case"}]

我不仅要禁用对齐,还希望 scalafmt 确保=>箭头前后各有一个空格。(所以它基本上应该与它目前正在做的相反。)

我怎样才能做到这一点?

4

1 回答 1

3
于 2019-04-02T15:54:59.460 回答