[英]SBT Formatter Plugin Using Common Config File
我有以下代碼:
package my.package
import sbt._
import Keys._
object OpenElectronsScalaFmtPlugin extends AutoPlugin {
override def trigger = allRequirements
override def requires = plugins.JvmPlugin
override def buildSettings: Seq[Def.Setting[_]] = {
SettingKey[Unit]("scalafmtGenerateConfig") :=
IO.write(
// writes to file once when build is loaded
file(".scalafmt-common.conf"),
("version = 3.6.1\n" +
"runner.dialect = scala213source3\n\n" +
"project.git = true\n" +
"preset = default\n\n" +
"align.preset = none\n" +
"align.tokens = [\n" +
" {code = \"<-\"},\n" +
"]\n\n" +
"docstrings.style = keep\n" +
"maxColumn = 120\n\n"
).stripMargin.getBytes("UTF-8")
)
}
}
正如您所看到的,我正在一個接一個地附加我覺得乏味的條目。 我的 IDE 沒有幫助我查看 IO.write function,我想知道參數是什么,以便我可以將 a.scalafmt-common.conf 作為文件而不是單個元素傳遞。 有任何想法嗎?
這是我想出的:
val commonScalaFormatConfig: String =
"""
|version = 3.6.1
|runner.dialect = scala213source3
|
|project.git = true
|preset = default
|
|align.preset = none
|align.tokens = [
| {code = "<-"},
|]
|
|docstrings.style = keep
|maxColumn = 120
|
|rewrite.rules = [
| SortImports,
| AvoidInfix,
|]
|
|spaces.inImportCurlyBraces = true
|includeNoParensInSelectChains = false
|trailingCommas = preserve
|
|continuationIndent {
| callSite = 2
| defnSite = 2
| extendSite = 2
|}
|
|optIn {
| forceBlankLineBeforeDocstring = false
|}
|
|newlines {
| source = keep
| afterCurlyLambdaParams = preserve
| beforeCurlyLambdaParams = multilineWithCaseOnly
| topLevelBodyIfMinStatements = []
|}
|""".stripMargin
override def trigger = allRequirements
override def requires = plugins.JvmPlugin
override def buildSettings: Seq[Def.Setting[_]] = {
SettingKey[Unit]("scalafmtGenerateConfig") :=
IO.write(
// writes to file once when build is loaded
file(".scalafmt-common.conf"), commonScalaFormatConfig.stripMargin.getBytes("UTF-8")
)
}
不完全是我的預期,但至少比我的原始版本好一步。
另一種方法是將 conf 文件放在某個位置並使用 IO.copyFromFile(..., ...) 從那里讀取它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.