DirectivesSorter

Small Mix formatter plugin that normalizes Elixir directives for consistent style.

It:

Installation

Add to your mix.exs:

defp deps do
  [
    {:directives_sorter, "~> 0.1.4", only: [:dev, :test], runtime: false},
  ]
end

Then run:

mix deps.get

Usage

  1. Add the plugin to your .formatter.exs:
[
  plugins: [DirectivesSorter],
  inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
]
  1. Run mix format or format from your editor. Examples:

Before (mixed order):

alias MyApp.Users.{Zed, Alpha, Beta}
require MyApp.Logger
@attr :foo
import MyApp.Util, only: [foo: 1]
use MyApp.Feature

After formatting (note: use and import relative order is preserved; alias and require are sorted):

use MyApp.Feature

import MyApp.Util, only: [foo: 1]

alias MyApp.Users.{Alpha, Beta, Zed}

require MyApp.Logger

@attr :foo

For more details see the Specification.