Используя vs code, как заставить формат scala работать и отформатировать мой код?

У меня есть плагин формата scala в моем репозитории sbt для нескольких проектов.

addSbtPlugin("org.scalameta"    % "sbt-scalafmt"        % "2.3.2")

Итак, в консоли sbt, если я запускаю scalafmt, он отлично работает

В моем build.sbt есть:

scalafmtOnCompile := true

Если я компилирую ~ в sbt или просто компилирую вручную, это не форматирует мой код во время компиляции.

Что не так с моей настройкой?

Кроме того, работает scalafmt, но он не форматирует мои файлы.scala в / project, как мой файл Dependencies.scala. Почему он игнорирует эти файлы?

Я также использую VS Code с металлами в качестве IDE.

2 ответа

Решение

Похоже, что Scalafmt работает в VSC с металлами прямо из коробки на моей машине

Metals автоматически использует Scalafmt для ответа на запросы форматирования от редактора в соответствии с конфигурацией, определенной в .scalafmt.conf... если нет .scalafmt.conf, получив первый запрос форматирования, Metals создаст для вас файл.scalafmt.conf.

Просто выполнить Format Document команда от Command Palette в VSC, и он должен быть отформатирован в соответствии с .scalafmt.conf. Если вы хотите непрерывно форматировать и компилировать при каждом изменении источника и scalafmtOnCompile не работает, попробуйте выполнить в sbt

~scalafmt;compile

однако форматирование при компиляции не рекомендуется в соответствии с документацией

Этот вариант не рекомендуется, поскольку он портит буферы отмены в редакторе и замедляет компиляцию. Вместо этого в редакторе рекомендуется использовать "форматировать при сохранении".

В VS Code, если вы зайдете в File -> Preferences -> Settings и наберете editor.format, вы увидите множество опций. Включите их все, и металлы должны применить все изменения соответственно.

Другие вопросы по тегам