2015-04-15 244 views
2

如果我有一個Scala的方法聲明太長,不適合在單行線,我想它在幾個線分開,和我重新格式化的期望是:IntelliJ IDEA的格式化Scala代碼

protected def pruneFilterProject(
    relation: LogicalRelation, 
    projectList: Seq[NamedExpression], 
    filterPredicates: Seq[Expression], 
    scanBuilder: (Array[String], Array[Filter]) => RDD[Row]) = { 
    pruneFilterProjectRaw(
    relation, 
    projectList, 
    filterPredicates, 
    (requestedColumns, pushedFilters) => { 
     scanBuilder(requestedColumns.map(_.name).toArray, selectFilters(pushedFilters).toArray) 
    }) 
} 

但重新格式化代碼後( control + alt + L),輸出爲:

protected def pruneFilterProject(
            relation: LogicalRelation, 
            projectList: Seq[NamedExpression], 
            filterPredicates: Seq[Expression], 
            scanBuilder: (Array[String], Array[Filter]) => RDD[Row]) = { 
    pruneFilterProjectRaw(
    relation, 
    projectList, 
    filterPredicates, 
    (requestedColumns, pushedFilters) => { 
     scanBuilder(requestedColumns.map(_.name).toArray, selectFilters(pushedFilters).toArray) 
    }) 
} 

什麼是IntelliJ IDEA的正確的代碼樣式規則斯卡拉郎,我應該設置覆蓋默認行爲,並讓我的期望輸出的風格?

編輯

取消選擇Align when multiline將導致:

protected def pruneFilterProject(
    relation: LogicalRelation, 
    projectList: Seq[NamedExpression], 
    filterPredicates: Seq[Expression], 
    scanBuilder: (Array[String], Array[Filter]) => RDD[Row]) = { 
    pruneFilterProjectRaw(
    relation, 
    projectList, 
    filterPredicates, 
    (requestedColumns, pushedFilters) => { 
     scanBuilder(requestedColumns.map(_.name).toArray, selectFilters(pushedFilters).toArray) 
    }) 
} 

參數和方法體將具有同樣的凹口(2空間),而不是所希望的一個: 參數列表具有兩個凹口( 4空格),只有一個縮進的方法列表(2個空格)

回答

2

您可能要取消選擇中的Align when multiline選項Preferences菜單的Scala部分的Wrapping and Braces選項卡中的部分。您可能還想在同一節中將摺疊選項設置爲Warp if long

爲了獲得所需的標籤,您需要在Tabs and Indents選項卡上將Continuation indent設置爲4,將Indent設置爲2。

+0

謝謝,我把結果格式放在答案的「編輯」部分,你會介意再幫助我嗎? –

+0

感謝您的更新。我認爲我需要的只是'方法聲明參數''繼續縮進'到4和其他'延續縮進'到2,這在Intellij IDEA中似乎不可用? –

2

我建議你使用Scalariform它是一個用於Scala的代碼格式化程序。它可以作爲庫,獨立命令行工具或通過與各種編輯器和構建工具(下面列出)的集成提供。

該計劃是在人們要求他們時添加首選項和功能,因此如果不按照您喜歡的方式設置代碼格式,請提出Github問題,我會看到我可以做。

Scalariform根據MIT許可證授權。

如果使用SBT, 添加到您的項目/ plugins.sbt

addSbtPlugin( 「com.typesafe.sbt」 % 「SBT-梯狀」 % 「1.3.0」)

這裏是所有的信息,這是一個,在他激活模板中使用類型安全,

scalriform github

https://github.com/sbt/sbt-scalariform

相關問題