• 作成:

Smartparensを使っていてScalaを書くと波括弧の入力時に改行が自動挿入される問題の解決

問題

ScalaではタプルのVectorへのmapを書く時などに, タプルにマッチする時はcaseが必要になることがあります. Scala 3では不要になるようですが.

これは複数個引数とタプルを区別するためです.

その時パターンマッチの外側には波括弧{}が必要になります.

そして私は, Smartparens をグローバルに有効にしているので, 波括弧を入力すると改行が入ってしまいます. 確実にタプルの対象に対してmapするときは一行で問題ないのに.

新規に波括弧を入力する時は問題ないのですが, タプルのパターンマッチ問題は後から気がつく時が多いので, リージョンを指定して括弧を挿入することが多いです. そのとき改行が入力されてストレス.

原因

原因を自分の設定のせいだと勘違いしていたのですが, smartparens-scala.elの設定しているアクションが原因でした.

(sp-local-pair 'scala-mode "{" nil
               :post-handlers '(("||\n[i]" "RET")
                                ("| " "SPC")
                                sp-scala-wrap-with-indented-newlines))

これを削除すれば良いので, 以下のように書きます.

(sp-local-pair 'scala-mode "{" nil :post-handlers '(:rem))