sbt plugin for source code formatting using Scalariform
Pull request Compare This branch is 1 commit behind typesafehub:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Plugin for sbt adding support for source code formatting using Scalariform.

Installing sbtscalariform

sbtscalariform 0.5.1 is a plugin for sbt 0.12.0 or higher. Please make sure that you are using an appropriate sbt release. In order to download and install sbt, please refer to the sbt Getting Started Guide / Setup.

As sbtscalariform is a plugin for sbt, it is installed like any other sbt plugin, that is by mere configuration. For details about using sbt plugins, please refer to the sbt Getting Started Guide / Using Plugins.

Most probably you can skip the details and just add sbtscalariform to your global or local plugin definition. Global plugins are defined in a plugins.sbt file in the ~/.sbt/plugins/ directory and local plugins are defined in a plugins.sbt file in the project/ folder of your project.

In order to add sbtscalariform, just add the below setting to the relevant plugin definition, paying attention to blank lines between (existing) settings:

addSbtPlugin("com.typesafe.sbtscalariform" % "sbtscalariform" % "0.5.1")

After adding the sbtscalariform plugin like this, you should either start sbt or, if it was already started, reload the current session by executing the reload command. If everything worked, you should have the new command scalariform-format available.

Basic configuration

  • If you installed this plugin globally (see above section), then you should add the below setting to your global build definition file build.sbt in the ~/.sbt/ directory
  • If you installed this plugin locally (see above section) or if you prefer to have more flexibility to tweak your settings on a per project basis, then you should add the below setting to your local build definition file build.sbt of your project
  • In any case, add the below setting to your build definition, paying attention to blank lines between (existing) settings
  • This will add the task scalariform-format in the scopes compile and test and additionally run this task automatically when compiling; for more control see the section Advanced configuration below

Using sbtscalariform

If you added the settings of this plugin like described above, you can either format your sources manually or automatically:

  • Whenever you run the tasks compile or test:compile your source files will be automatically formatted by Scalariform
  • If you want to start formatting your source files explicitly, just run the task scalariform-format or test:scalariform-format

Advanced configuration

This plugin comes with varoius configuration options. Changing the formatting preferences and deactivating the automatic formatting on compile are probably the most important ones and described in detail.

You can provide your own formatting preferences for Scalariform via the setting key ScalariformKeys.preferences which expects an instance of IFormattingPreferences. Make sure you import all necessary members from the package scalariform.formatter.preferences. Let's look at an example which would change the behavior of the default preferences provided by this plugin (by default the below preferences are set to true):

import scalariform.formatter.preferences._

ScalariformKeys.preferences := FormattingPreferences().
  setPreference(DoubleIndentClassDeclaration, false).
  setPreference(PreserveDanglingCloseParenthesis, false)

If you don't want sbt to automatically format your source files when the tasks compile or test:compile, just use defaultScalariformSettings instead of scalariformSettings:


Other useful configuration options are provided by common sbt setting keys:

  • includeFilter in format: Defaults to "*.scala"
  • excludeFilter in format: Using the default of sbt

Mailing list

Please use the sbt mailing list and prefix the subject with "[sbtscalariform]".

Contribution policy

Contributions via GitHub pull requests are gladly accepted from their original author. Along with any pull requests, please state that the contribution is your original work and that you license the work to the project under the project's open source license. Whether or not you state this explicitly, by submitting any copyrighted material via pull request, email, or other means you agree to license the material under the project's open source license and warrant that you have the legal authority to do so.


This code is open source software licensed under the Apache 2.0 License. Feel free to use it accordingly.