IntelliJ IDEAでScalaのメソッドパラメーターをカッコに合わせて整列しない設定

追記'15/11/15: 専用の設定が追加されました

Scalaプラグインバージョン2.0.181から(?)設定に項目が追加されました。2.0.181は現在ScalaプラグインのUpdate channelをNightlyに設定していればインストール可能。

f:id:kxbmap:20151115153041p:plain

下記のContinuation Indentの代わりに、Settings > Editor > Code Style > Scala > Other > Alternate Indentation for constructor args and parameter declarationsをチェックして4spacesに設定したら望む挙動になります。

Continuation Indentで設定した場合と違って、クラス・メソッド宣言以外のインデントに影響しません。

追記終わり


#rpscalaの懇親会で話題になったものの皆さん知らないようだったので。

case class Hoge(foo: String, bar: Int, baz: Double)

このようなcase classがあるときに各引数の位置で改行すると、標準の設定では以下のようにインデントされる。*1

case class Hoge(
                 foo: String,
                 bar: Int,
                 baz: Double)

これをScala Style Guideに沿って以下のように書きたい。*2

case class Hoge(
    foo: String,
    bar: Int,
    baz: Double)

そのためには、Settings > Editor > Code Style > Scala

  • Tabs and Indents > Continuation Indent4
  • Wrapping and... > Method Declaration parameters > Align when multilineのチェックを外す

f:id:kxbmap:20150226030749p:plain

これで改行時にスペース4つの位置にパラメーターが整列するようになる。

また、

  • Method Declaration parametersDo not wrapからChop down if long
  • Method Declaration parameters > New line after '('をチェックする

この設定を追加すると、自動整形*3時に行が長い場合*4、Style Guideに沿った形に整えてくれる。

追記 チームで設定を共有したい場合

*1:この設定の場合、普通1つ目の改行は入れないと思うけども

*2:このクラスは短いので1行で書くべきだが、実際はもっと長いとして

*3:WindowsではCtrl+Alt+L

*4:Code StyleのRight margin (columns)を超える場合

*5:Code Styleは.idea/codeStyleSettings.xmlに保存される