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))