Changelog History
Page 1
-
v0.13.1.2 Changes
May 01, 2021- #347: Allowed hspec 2.8. Thanks @felixonmars!
-
v0.13.1.1 Changes
February 01, 2021- #333: Allowed random 1.2. Thanks @felixonmars!
- โก๏ธ #334: Updated Arch install instructions. Thanks @ahstro!
- ๐จ #343: Allowed ghc-exactprint 0.6.4. Thanks @maralorn!
-
v0.13.1.0 Changes
December 11, 2020๐ฆ https://hackage.haskell.org/package/brittany-0.13.1.0
- #330: Started sorting imports. Thanks @expipiplus1!
-
v0.13.0.0 Changes
December 10, 2020๐ฆ https://hackage.haskell.org/package/brittany-0.13.0.0
- ๐ #324: Added support for GHC 8.10.
- Dropped support for GHC 8.4, 8.2, and 8.0.
- Thanks @jneira, @bubba, @infinity0, and @expipiplus1!
- ๐ #324: Added support for GHC 8.10.
-
v0.12.2.0 Changes
November 15, 2020๐ฆ https://hackage.haskell.org/package/brittany-0.12.2.0
#207: Fix newtype indent in associated type family.
#231: Improve comments-affecting-layout behaviour for tuples.
#259: Data declaration for newtype and records. Thanks @eborden!
#263: Fix non-idempotent newlines with comment + where.
#273: Error handling.
#281: Fix moving comment in export list (haddock header).
#286: Fix comments in instance/type instances.
๐ #287: Add support for pattern synonyms. Thanks @RaoulHC!
#293: Expose main function as a module. Thanks @soareschen!
๐ #303: Readme: Supports 8.8. Thanks @andys8!
#311: Allows aeson-1.5.*. Thanks @jkachmar!
#313: Nondecreasing export list formatting. Thanks @expipiplus1! -
v0.12.1.1 Changes
December 01, 2019- ๐ Bugfixes:
- Fix layouting regression of record update for many/large fields
- Fix whitespace regression on ExplicitForall notation
(
foo :: forall a . Show a => a -> a
, note the double space) introduced in 0.12. (#264) - Fix roundtripping of type equality constraint
f :: ((~) a b) => a -> b
(#267)
- One experimental feature addition: Turning brace notation semicolons into newlines when formatting (see #270)
- ๐ Bugfixes:
-
v0.12.1.0 Changes
September 01, 2019- ๐ Support ghc-8.8
- ๐ Support for OverloadedLabels extension (thanks to Evan Rutledge Borden @eborden)
- ๐ Support for Implicit Params extension (thanks to pepe iborra @pepeiborra)
- โ Add flag
--no-user-config
to enable only using manually passed config - ๐ Disable the performance test suite by default to prevent spurious failures
on certain CI setups. The github/travis brittany CI still has all tests
enabled. See the
brittany-test-perf
flag in the cabal file. - ๐ Bugfixes:
- Fix one wandering-comment bug for let-in expressions
- Fix invalid result for prefix operator pattern matches
- Fix lambda expression with laziness/strictness annotation
- Fix parenthesis handling for infix pattern matches with 3+ arguments
- ๐ Changes to layouting behaviour:
- For pattern matching and data/instance definitions, the usage of parenthesis is now "normalized", i.e. superfluous parens are removed by brittany.
-
v0.12.0.0 Changes
June 01, 2019- ๐ Support for ghc-8.6 (basic support, not necessarily all new syntactic extensions)
- ๐ Support -XExplicitNamespaces and -XPatternSynonyms
- ๐ Allow a --dry-run sort of operation via flag "-c/--check-mode" (thanks to Doug Beardsley @mightybyte)
- ๐ Include file name in errors about unsupported syntax nodes (thanks to @5outh)
- Partially implement layouting class instances: Layouts children, but falls back on ghc-exactprint for the instance head (thanks to Rupert Horlick @ruhatch)
- Implement layouting for type synonyms (thanks to Rupert Horlick @ruhatch)
- ๐ Support -XMagicHash, -XUnboxedTuples (thanks to Sergey Vinokurov @sergv)
- ๐ Support -XQuasiQuotes (no formatting applied to the splices; they are simply
retained without causing the dreaded "Unknown construct: HsSpliceE{}")
lconfig_allowHangingQuasiQuotes
controls whether multi-line QuasiQuotes are allowed to start at the end of the current line, or whether they are always placed in new lines.
- ๐ Bugfixes:
- Fix rare-case alignment bug with IndentPolicyMultiple (#144)
- Make inline layout config apply to module header (#151)
- Fix unaligned import-hiding layout (#150)
- Fix idempotence violation for comments around if-then-else (#167)
- Fix comments having an effect on far-away parent node's layout (#159)
- Fix imports of type operators ("symbolic data types") (thanks to Phil Hazelden @ChickenProp)
- Work around GHC and cabal-install misfeature ".ghc.environment files" that could break brittany in unexpected and hard-to-understand ways
- Stop removing empty lines before
where
keyword in a couple of cases - Fix functions with mixing prefix/infix style causing error (#234)
- ๐ Changes to layout:
- Align usage of spaces for record update vs record construction (#126)
- More indentation to import-hiding-paragraph (follow-up to #150 fix)
- Record construction and update now are layouted in the same way (thanks to Evan Rutledge Borden @eborden)
- Stop allowing single-line layout when there are comments between arguments (#214) (thanks to @matt-noonan)
- ๐ Various build-instructions and editor integrations
-
v0.11.0.0 Changes
May 01, 2018- ๐ Support for ghc-8.4
Implement inline-config e.g. "-- brittany --indent=4"
respects the following comment forms as input:
source comment affected target ====================================================== "-- brittany CONFIG" whole module "-- brittany-next-binding CONFIG" next binding "-- brittany-disable-next-binding" next binding "-- brittany @ myExampleFunc CONFIG" `myExampleFunc`
multiline-comments are supported too, although the specification must still be a single line. E.g.
"{- brittany --columns 50 -}"
CONFIG is either:
1) one or more flags in the form of what brittany accepts on the commandline, e.g. "--columns 50", or 2) one or more specifications in the form of what brittany accepts in its config files for the layouting config (a one-line yaml document), e.g. "{ lconfig_cols: 50 }"
Implement
IndentPolicyMultiple
(thanks to Bryan Richter @chreekat) Restrict indentation amounts ton * indentAmount
Implement
--obfuscate
that replaces non-keyword identifiers with random namesโก๏ธ Do not write files unless there are changes (don't update modtime) (
--write-mode=inplace
) (#93)๐ Bugfixes:
- Fix empty function constraints (
() => IO ()
) (#133) - Fix overflowing columns caused by aligning with surrounding lines for certain complex cases
- Implement hacky workaround for
type instance
s (-XTypeFamilies
) (#89)
- Fix empty function constraints (
Layouting changes:
- On default settings, allow single-line module header
module MyModule where
when no exports - Fix one case of non-optimal layouting for if-then-else
- Allow same-line let binding inside do-notation with
IndentPolicyLeft/Multiple
andindentAmount>=4
- On default settings, allow single-line module header
-
v0.10.0.0 Changes
March 01, 2018- Implement module/exports/imports layouting (thanks to sniperrifle2004)
- ๐ฆ Expose config paths/parsing functions (thanks to Alexey Raga)
- ๐ Bugfixes:
- Fix layouting of
NOINLINE
pragma - Fix ticked type operator (e.g.
':-
) losing tick (#125) - Fix alignment issue with cases involving operators (#65)
- Fix comments in tuples being dropped (#37)
- Fix comment placements with let-in (#110)
- Fix layouting of
- Layouting changes:
- Align arguments only if it is the same function being called (#128)
- Do not use single-line layout when infix operator expression contains comments (#111)
- ๐ New layouting config items:
lconfig_importColumn
/--import-col
: column for import itemslconfig_importAsColumn
/--import-as-col
: column for the "as" name of a modulelconfig_reformatModulePreamble
: controls module/export/import layouting (default True)lconfig_allowSingleLineExportList
: permit one-line module header, e.g.module Main (main)
(default False)