fix-imports: Program to manage the imports of a haskell module

[ bsd3, editor, haskell, ide, program ] [ Propose Tags ]

fix-imports is a small standalone program to manage the import block of a haskell program. It will try to add import lines for qualified names with no corresponding import, remove unused import lines, and sort the import block according to some heuristic you can define. This only works for qualified imports! Unqualified imports are left untouched.

It's most convenient if bound to an editor key. See the included vimrc for an example. You may have to cabal unpack or git clone to see it.

[Skip to Readme]
Versions 0.1.0, 0.1.1, 0.1.2, 0.1.3, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.1.0
Change log
Dependencies base (>=3 && <5), containers, cpphs, directory, filepath, haskell-src-exts (>=1.16.0), process, split, text, uniplate [details]
License BSD-3-Clause
Author Evan Laforge
Maintainer Evan Laforge <>
Category Editor, Haskell, IDE
Source repo head: git clone git://
Uploaded by EvanLaforge at Tue Feb 27 19:11:51 UTC 2018
Distributions NixOS:1.1.0
Executables fix-imports
Downloads 3923 total (23 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2018-02-27 [all 3 reports]
Hackage Matrix CI


Maintainer's Corner

For package maintainers and hackage trustees

Readme for fix-imports-1.1.0

[back to package description]
There are a few things which can be configured.  Edit src/Main.hs and mess with
the Config it passes in.  There isn't much configurability but what there is
should be documented in the modules in which it is defined.

See the vimrc for an exmaple of how it can be bound to a key in vim.

It'll reformat the import lines, including an import list if you have one.
Sorry about that.  The formatting style of Language.Haskell.Exts.prettyPrint
is not my personal style.  If it ever bothers me enough maybe I'll write my
own formatter, or come up with a way to not reformat unqualified imports.

Also, it will search for modules starting from '.', so you should be in the
root of the module hierarchy.  It wouldn't be hard to add a -i flag though.

haskell-src-exts will crash the program if it gets an ambigious operator
fixity parse.  I don't know why it does that, but if you get a crash like that
you can add your custom operators to the Config.

It can be a little slow.  Most of the time is haskell-src-exts parsing the