在一个使用IntelliJ社区版的scala项目中,我们希望每个文件使用多个包,以便我们可以使用较短的语法来引用它们:
package com.dreamlines.dragonfly
package api
package domain
package harbours
import common.entities.EsHarbour
import common.utils.date.DLDateTime
Run Code Online (Sandbox Code Playgroud)
但是,IntellJ希望强制使用完全合格的软件包名称,因此在优化导入时,它将代码更改为:
import com.dreamlines.dragonfly.common.entities.EsHarbour
import com.dreamlines.dragonfly.common.utils.date.DLDateTime
Run Code Online (Sandbox Code Playgroud)
如何配置优化导入的行为?
这应该
我想保持优化导入的其他行为,例如删除未使用的导入,添加缺失的导入,对导入进行排序。因此,我不认为不使用优化导入是一个有效的选项。
此外scalafmt
,我们正在使用格式化程序,因此它可能与.scalafmt.conf
此项目的外观有关:
version = 2.0.0
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, prefercurlyfors]
unindentTopLevelOperators = true
importSelectors = singleLine
spaces.afterKeywordBeforeParen = true
lineEndings = unix
newlines.penalizeSingleSelectMultiArgList = false
newlines.alwaysBeforeElseAfterCurlyIf = …
Run Code Online (Sandbox Code Playgroud) 我的多项目 sbt 存储库中有 scala 格式插件。
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.3.2")
Run Code Online (Sandbox Code Playgroud)
所以在 sbt 控制台中如果我运行 scalafmt 它工作正常
我的 build.sbt 有:
scalafmtOnCompile := true
Run Code Online (Sandbox Code Playgroud)
如果我在 sbt 中执行 ~compile 或只是手动编译,它不会在编译期间格式化我的代码。
我的设置有什么问题吗?
另外,运行 scalafmt 可以工作,但它不会像我的 Dependency.scala 文件那样格式化 /project 中的 .scala 文件。为什么它忽略这些文件?
我也使用带有金属的 VS Code 作为我的 IDE。
是否有一个 scalafmt 配置可以像现在带有 scala 插件的 IntelliJ 一样重新格式化代码?我在配置它时遇到问题,我的队友只使用 IntelliJ 我 VsCode,而且很多时候我只需要打开 IntelliJ 来重新格式化代码:)
谢谢
我有一堆 Scala 项目。他们应该共享一个共同的代码风格。我正在使用 scalafmt 来强制执行某些规则,但我必须创建一个
.scalafmt.conf
Run Code Online (Sandbox Code Playgroud)
对于每个项目。如果团队更改了 scalafmt 规则,我们就必须为每个项目手动更改它。所以这些文件很容易自行演变。
如何创建一个通用的scalafmt.conf
作为我自己的其他项目可以导入的依赖项?这样,一个项目仍然可以依赖于他们自己版本的代码风格——但是升级路径更直接,应该只包含升级依赖项。
Scalafmt 支持默认样式,例如:
style = default
Run Code Online (Sandbox Code Playgroud)
或者
style = defaultWithAlign
Run Code Online (Sandbox Code Playgroud)
我基本上是在寻找一种方法来定义我自己的风格并在我的项目中引用它:
style = MyCompanyDefault
Run Code Online (Sandbox Code Playgroud) 运行任何 SBT 任务(例如compile
)后,scalafmt 会被执行并更改某些计算机上的行结尾(大多数计算机使用 Windows)。是否可以在 scalafmt.conf 或任何其他方式中设置行结尾?
谢谢。