# Revision history for brittany ## 0.10.0.0 -- March 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) * 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 items - `lconfig_importAsColumn`/`--import-as-col`: column for the "as" name of a module - `lconfig_reformatModulePreamble`: controls module/export/import layouting (default True) - `lconfig_allowSingleLineExportList`: permit one-line module header, e.g. `module Main (main)` (default False) ## 0.9.0.1 -- February 2018 * Support `TupleSections` (thanks to Matthew Piziak) * Bugfixes: - Fix Shebang handling with stdin input (#92) - Fix bug that effectively deleted strict/lazy matches (BangPatterns) (#116) - Fix infix operator whitespace bug (#101, #114) - Fix help command output and its layouting (#103) - Fix crash when config dir does not exist yet (#115) * Layouting changes: - no space after opening non-tuple parenthesis even for multi-line case - use spaces around infix operators (applies to sections and in pattern matches) - Let-in is layouted more flexibly in fewer lines, if possible (thanks to Evan Borden) ## 0.9.0.0 -- December 2017 * Change default global config path (use XDG spec) Existing config should still be respected, so this should not break compatibility * Support per-project config * ! Slight rework of the commandline interface: - Support multiple inputs and outputs - Support inplace-transformation for multiple files via `--write-mode=inplace` * Implement `IndentPolicyLeft` - the indentation mode that never adds more than the base indentation for nested parts (no hanging indentation) (thanks to Evan Borden) * Fix bug that manifested in bad output for (top-level) template haskell splices * Extension support: - RecordWildCards - RecursiveDo (was only partially supported previously) * Layouting Bugfixes: - Properly reproduce parentheses around kind signatures - Fix issue around promoted lists (example good: `'[ 'True]` bad: `'['True]`) - Trim text from exactprint used as workaround for unknown nodes (unsupported extension workaround) * Layouting changes - Insert spaces around operator in sections ## 0.8.0.3 -- September 2017 * Support for ghc-8.2.1 * Bugfixes: - Fix quadratic performance issue - Fix special "where" indentation with indentAmount /= 2 - Fix negative literals in patterns - Support type applications * Accept `-h` for `--help` and improve help layouting (via butcher-1.1.0.2) * Add continuous integration via travis (cabal, cabal-new, stack) (brittle due compilation time limit) * Reduce compilation memory usage a bit ## 0.8.0.2 -- August 2017 * Add library interface, to be used by `haskell-ide-engine`. * Publish to hackage. ## 0.8.0.1 -- May 2017 * Document the high-level design of the program * Improve layouting for many different cases, too many to list here. Brittany still does only reformat top-level type signatures and bindings. * Publish all dependencies on hackage; `ghc-exactprint ` adaptions got merged upstream as well. * Reduce the aggressiveness of horizontal alignment; this is configurable via the `lconfig_alignmentLimit` and `lconfig_alignmentBreakOnMultiline` values (config file only for now). * (!) Breaking change to the config file format: The keys previously contained underscore (e.g. `_econf_Werror`) but do not anymore (`econf_Werror`). Add config version; also * Move config value `conf_errorHandling.econf_CPPMode` to `conf_preprocessor.ppconf_CPPMode`. * Cope with unhandled syntactical constructs more gracefully by falling back on the ghc-exactprint output; Brittany simply won't touch certain subexpressions instead of aborting. This is further configurable via the `econf_omit_output_valid_check` config value. * Due to improvements to the `butcher` library: Accept `--key=value` on commandline (only `--key value` was supported previously). * Improve testsuite setup: The `tests.blt` file contains many different testcases that allow quick addition - feel free to report bugs directly by making PRs with additions to that file. * Release under the terms of the AGPLv3 ## 0.7.1.0 -- 2016-09-06 * Support stack * Fix --ghc-options handling * Add commandline param to allow shortcut `brittany Foo.hs` meaning `brittany -i Foo.hs` ## 0.7.0.0 -- 2016-09-04 * First official alpha release * Fix commandline flag parsing * Implement/Improve horizontal aligning * Various minor fixes and layouting improvements ## 0.6.0.0 -- 2016-08-12 * Add check that output is syntactically valid * (!) Change config format, breaking previous configs * Various layouting additions/imporements * Various minor fixes ## 0.5.0.0 -- 2016-08-08 * Support --ghc-options * Support user and local config files: Local config file is not mandatory anymore. ## 0.4.0.0 -- 2016-08-06 * Make comment handling a bit more clever * Various layouting additions/imporements ## 0.3.0.0 -- 2016-08-04 * Various layouting additions/imporements ## 0.2.0.0 -- 2016-07-30 * Basic and partial implementation for expression/decl/statement/pattern layouting * Prevent exponential behaviour using manual stablenames ## 0.1.0.0 -- 2016-06-05 * First working code for type signature layouting