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. -
Preserves original order for
useandimportdirectives. -
Sorts
aliasandrequiredirectives within their categories by module name (stable, case-insensitive). Foralias 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.4", only: [:dev, :test], runtime: false},
]
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.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 :fooFor more details see the Specification.