🛠️
Metalsを使うときだけ`scalacOptions`の設定を変えたい
この記事はScala Advent Calendar 2024 5日目の記事ということにしておく(にぎわい感の創出)。
私が今やっているプロジェクトはScalaのコンパイラオプションとして-Xfatal-warnings
が有効化されているのですが、Metalsはこれを無効化することを推奨しています:
-Xfatal-warnings: disable this setting even if you have it enabled in your main build. Fatal warnings prevent code navigation from working when there are warnings like 'unused import'.
https://scalameta.org/metals/docs/integrations/new-build-tool/
他のメンバーはIntelliJとか使ってるので困らんらしい!!!
想定される解決策としては
-
bloopInstall
のときだけscalacOptions
を変更するようにbuild.sbt
を修正する- できなくはなさそう。
sbt-bloop
プラグインが有効になってない環境に対応するため、task keyを動的に取得する必要がある。
- できなくはなさそう。
- 手元で
build.sbt
を修正、コミットせずにgit update-index --skip-worktree
する - Metalsの設定を変更してsbtコマンドの呼び方を変える
あたりですが、最後のが一番リーズナブルだと判断した。
まずsbt
コマンドのラッパーを用意し、
~/bin/sbt-no-fatal-warnings.sh
#!/bin/sh
sbt 'set scalacOptions -= "-Xfatal-warnings"' "$@"
エディタからMetalsを設定し、sbt
の代わりに用意したラッパーを呼ぶようにする。
metals_config.settings = {
showImplicitArguments = true,
excludedPackages = { "akka.actor.typed.javadsl", "com.github.swagger.akka.javadsl" },
sbtScript = vim.fn.expand("~/bin/sbt-no-fatal-warnings.sh"),
-- 以下略
これでMetalsがビルドをインポートする際には-Xfatal-warnings
が無効化されるようになります。良かったですね。
Discussion