DirectivesSorter
Small Mix formatter plugin that normalizes Elixir directives for consistent style.
It:
-
Moves all directives (
use,import,alias,require) in a module to the top (right after@moduledocif present). -
Orders categories as:
use, thenimport, thenalias, thenrequire. -
Sorts within each category by module name (stable, case-insensitive). For
alias as: X, sorts by the visible alias first. - Sorts items inside alias groups, preserving attached comments.
Installation
Add to your mix.exs:
defp deps do
[
{:directives_sorter, "~> 0.1.1", only: :dev}
]
endThen run:
mix deps.getUsage
-
Add the plugin to your
.formatter.exs:
[
plugins: [DirectivesSorter],
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
]-
Run
mix formator 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.FeatureAfter formatting:
use MyApp.Feature
import MyApp.Util, only: [foo: 1]
alias MyApp.Users.{Alpha, Beta, Zed}
require MyApp.Logger
@attr :fooFor more details see the Specification.