Lennart Spitzner
81928ea597
Switch to ghc-exactprint-0.5.6.0, Remove code duplication
2018-02-14 01:14:24 +01:00
Lennart Spitzner
55b1c71bf3
Fix a layouting mistake that went unnoticed so far
2018-02-14 01:00:01 +01:00
Lennart Spitzner
91de1ca08c
Fix bang deletion on ghc-8.2, Add testcase ( fixes #116 )
2018-02-13 23:48:00 +01:00
Lennart Spitzner
077b93db01
Minor refactor
2018-02-09 16:50:57 +01:00
Evan Rutledge Borden
eb8f0de6c3
Remove redundant import.
2018-02-09 16:43:59 +01:00
Evan Rutledge Borden
019d47bf7e
Change infix patterns to include spaces
...
This commit changes infix patterns to utilize `lrdrNameToTextAnn`. This
function allows the logic to avoid introspecting on the constructor
name.
Additionally this adds spaces to all infix operator pattern matches.
Previously infix symbols did not include spaces:
```
foo (x:xs) = _
```
Now they include a space
```
foo (x : xs) = _
```
2018-02-09 16:43:44 +01:00
Evan Rutledge Borden
18b3cfaf88
Fix infix constructor pattern matching for normal constructors
...
Brittany was previously only support symbol based infix constructors. It
is common in some libraries (for example Esqueleto) to pattern match on
normal constructors as infix. Brittany was failing in this case by not
wrapping the constructor name in back ticks/spaces. Backticks and spaces
have been added in the case where the constructor contains any alpha
characters.
2018-02-09 16:43:29 +01:00
Lennart Spitzner
25ff576dc3
Merge pull request #97 from eborden/let-in-on-single-lines
...
Format let and in on a single line if they fit
2018-01-13 21:39:11 +01:00
Lennart Spitzner
399e2f4f43
Minor cleanups
2018-01-13 18:41:51 +01:00
Evan Rutledge Borden
cab1297585
Change function name to if/else
2017-12-31 00:11:10 -05:00
Evan Rutledge Borden
f1b49b082f
Format let and in on a single line if they fit
...
The following is wasteful of vertical space:
```
_ =
let
longIdentifierForShortValue = 1
in
longIdentifierForShortValue + longIdentifierForShortValue
```
We should format it on two lines if possible.
```
_ =
let longIdentifierForShortValue = 1
in longIdentifierForShortValue + longIdentifierForShortValue
```
This commit also allows for a mix of variations:
```
_ =
let
longIdentifierForShortValue = 1
in longIdentifierForShortValue + longIdentifierForShortValue
_ =
let longIdentifierForShortValue = 1
in
longIdentifierForShortValue + longIdentifierForShortValue
```
2017-12-31 00:04:53 -05:00
Lennart Spitzner
37e355fea5
Support hanging type signature config option
2017-12-28 21:38:31 +01:00
Lennart Spitzner
43abab2dd2
Remove space after opening parenthesis ( fixes #87 )
2017-12-28 20:46:03 +01:00
Lennart Spitzner
0f3ee76944
Fix shebang handling with stdin input
...
Fixes #92
probably should update upstream (ghc-exactprint)
2017-12-27 23:26:18 +01:00
sniperrifle2004
98c93f0d63
Move expanded binding list to standard indent level for compact layout
2017-12-22 16:35:39 +01:00
sniperrifle2004
ad34a8b9b9
Only expand empty binding list with comments
2017-12-22 10:18:09 +01:00
sniperrifle2004
3708838b6a
Also handle comments inside ThingWith
2017-12-22 06:58:39 +01:00
sniperrifle2004
21c080572b
Add compact version of import layout
...
Also let layoutLLIEs deal with comments
2017-12-21 23:51:27 +01:00
Lennart Spitzner
f920f4714d
Fix maximum on empty list, fixes #88
2017-12-21 21:45:29 +01:00
Lennart Spitzner
82a5ffb3b3
Refactor a bit more
...
- remove unnecessary docWrapNodeRest
- make sure that sharing is correct and non-redundant
2017-12-21 17:56:54 +01:00
Lennart Spitzner
33f23a65ec
Refactor and Add missing docSharedWrapper
2017-12-21 15:44:58 +01:00
Lennart Spitzner
f651d02898
Merge branch 'dev' into import
2017-12-19 22:27:37 +01:00
Lennart Spitzner
ce7ec0b467
Fix warning
2017-12-19 17:55:31 +01:00
sniperrifle2004
162b6e6bfd
Also fix export comments
...
Also refactored a little to improve reuse of the docWrapNode logic
2017-12-19 16:33:13 +01:00
sniperrifle2004
a59df1f391
Fix comments!! 🎉
2017-12-19 14:28:22 +01:00
sniperrifle2004
7c51a181c8
Fix operators for ThingWith
2017-12-19 01:17:19 +01:00
sniperrifle2004
eac17b1bf2
Also render comments on the binding list
2017-12-19 01:11:25 +01:00
Lennart Spitzner
8c3a9bec25
Fix operators in import list
2017-12-18 18:56:50 +01:00
sniperrifle2004
c3b6e17261
Improve layout for imports
2017-12-18 13:17:24 +01:00
Lennart Spitzner
204f0aff08
import+module: Refactor and Simplify slightly
2017-12-17 21:14:46 +01:00
Lennart Spitzner
d8097f2862
Add mask_ to prevent "ghc panic" when using timeout on brittany
2017-12-17 15:45:08 +01:00
sniperrifle2004
e140cd01e0
Add directives for ghc > 8.2
2017-12-17 14:06:41 +01:00
sniperrifle2004
ee9abff9e8
Add import and module support
2017-12-17 12:51:04 +01:00
Lennart Spitzner
9700fb2a50
Merge pull request #82 from matthew-piziak/tuple-section-support
...
Tuple section support (fixes #41 )
2017-12-15 00:49:57 +01:00
Matthew Piziak
b731cd15e7
capture starting layout
2017-12-14 16:17:39 -05:00
Lennart Spitzner
0036dbf410
Add some documentation for `layoutPat`
2017-12-11 17:13:33 +01:00
Lennart Spitzner
39c48b33f1
Fix error in Annotation filtering ( fixes #70 )
2017-12-08 19:57:16 +01:00
Lennart Spitzner
127299b442
Merge branch 'dev' into indentpolicyleft
2017-11-30 23:47:18 +01:00
Lennart Spitzner
882a3b1a7a
Allow single-line after let with IndentPolicyLeft
2017-11-30 23:20:35 +01:00
Lennart Spitzner
8a401d291e
Workaround for #68 : trim exactprinted text for unknown nodes
2017-11-28 18:23:05 +01:00
Lennart Spitzner
6a97379b33
Add whitespace around operator in section, Fixes #67
2017-11-28 17:56:28 +01:00
Lennart Spitzner
d9155e240d
RecursiveDo: Add second layout, Respect IndentPolicyLeft
2017-11-27 23:13:13 +01:00
Lennart Spitzner
466ff237ff
Add some comments/examples in layoutStmt
2017-11-27 23:05:47 +01:00
Lennart Spitzner
9e8571b848
Remove an unnecessary node in BriDoc construction; Add TODO
2017-11-27 23:01:32 +01:00
Evan Rutledge Borden
e9a2de7a85
Filter binders with docSetBaseAndIndent.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
de0851f975
Use docAltFilter for consistency.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
35f33c131c
Remove duplication in 'let' expression layout.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
44e95940c0
Change record update syntax for left indent policy
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
d1e1984206
Update guard formatting for IndentPolicyLeft
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
a13a137f68
Add left indent support for statements
...
This aligns left indent style `let` statements with their expression
form.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
de5f0401f3
Add consistency between contsrained and unconstrained forall format
...
Constrained forall formats aligned the `.` to the left. Constrained
formats aligned the `.` to the right. This change adds consistency
between both formats.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
ce41178df5
Remove context sensitive let indentation when IndentPolicyLeft
...
Let expressions with multiple bindings automattically indent and pull
left
```
let
a = b
c = d
in foo bar baz
```
```
let
a = b
c = d
in
foo bar baz
```
```
let
a = b
c = d
in foo
bar
baz
```
```
let
a = b
c = d
in
foo
bar
baz
```
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
bdf8769913
Remove 3 space special case from HsIf when IndentPolicyLeft
...
```
if foo
bar
then
baz
```
becomes
```
if foo
bar
then
baz
```
2017-11-27 18:12:19 +01:00
Lennart Spitzner
88cbaf813a
Implement `IndentPolicyLeft` for one HsApp case
2017-11-27 18:12:19 +01:00
Lennart Spitzner
4568bd3553
Prepare implementation for `IndentPolicyLeft`
2017-11-27 18:12:19 +01:00
Lennart Spitzner
c709513209
Remove dependency on either package
...
Following the deprecation and removal of the EitherT transformer
2017-11-27 18:11:49 +01:00
Lennart Spitzner
26f8cdfb65
Support RecursiveDo/`rec` keyword
2017-10-24 00:25:59 +02:00
Lennart Spitzner
ddd7c6b439
Fix some rare issue and add some comments
...
(it is so rare i cannot reproduce anymore right now,
because the code that caused it has changed since..)
2017-10-24 00:00:34 +02:00
Lennart Spitzner
b1c6be7acd
Fix parentheses around kind signatures, fixes #64
2017-10-15 00:23:14 +02:00
Lennart Spitzner
f86665a251
Fix promoted HsTyVars on ghc-8.2.1
...
This fix does not work on ghc-8.0, because I do not understand
the 8.0 API in this instance. Could be resolved by looking
at annotations, but that really should not be necessary.
2017-10-14 23:21:13 +02:00
Lennart Spitzner
ccf2eb092f
Support RecordWildCards, Add one-liner layouting for records
...
fixes #52
2017-10-01 17:24:13 +02:00
Lennart Spitzner
a348ae7fbc
Switch to XDG path for config; Search conf in parents
...
- switch to XDG path should be backwards-compatible:
- new config will be written to XDG path
- but existing config in ~/.brittany will be respected
- looks for "brittany.yaml" not only in cwd, but in parents too.
uses the first file found.
fixes #45 , fixes #55
2017-09-29 21:42:39 +02:00
Lennart Spitzner
d1606932f8
Minor cleanup / performance improvement
2017-09-20 23:35:45 +02:00
Lennart Spitzner
867016c198
Fix quadratic behaviour ( fixes #34 )
...
Split up annotations by top-level elements in one
go, instead of doing the filtering per top-level
element (which necessarily makes things quadratic,
or rather O(n*m) with n top-level elements and m
size of annotation map). The fixed version should
be O(log n * m), and log n is negligible.
2017-09-20 23:35:45 +02:00
Lennart Spitzner
9703ebead5
Fix #53
...
Previously, if the input did not end with a newline
character and config had 'ppconf_hackAroundIncludes = True'
then due to using unlines/lines the output contained an
additional newline.
2017-09-10 16:37:35 +02:00
Lennart Spitzner
ca13a1897f
Fix type application layouting ( fixes #48 )
...
- one-line externals are not detected as multiline in backend
- layouting of EAsPat (when TypeApplications is disabled)
- layouting of HsTyLit (TypeApplications with literals)
2017-08-20 14:09:03 +02:00
Lennart Spitzner
fba8ad1a99
Fix negative literals in patterns ( fixes #49 )
2017-08-20 00:34:13 +02:00
Lennart Spitzner
1288c37204
Disable specific optim. in Config/Types/Instances
2017-08-19 14:56:46 +02:00
Lennart Spitzner
aba7d13f67
Fix stupid haddock needs
2017-08-16 00:14:56 +02:00
Lennart Spitzner
6f4eec245e
Split up Config/Types.hs
...
for the compilation of that module, GHC max residency
was an astounding 600MB for Config/Types.hs;
for Config/Types/Instances.hs it now "only" is 480MB.
(numbers according to "+RTS -s", the real usage
accoding to `time` is about 20% higher even.)
2017-08-15 20:37:46 +02:00
Lennart Spitzner
3ac8cccb0f
Refactor prelude.inc/Prelude to reduce imports
2017-08-12 23:51:07 +02:00
Lennart Spitzner
ebf84a03e9
Merge remote-tracking branch 'origin/master'
2017-08-12 15:29:06 +02:00
Erik Schnetter
0774d0e413
Correct typographical errors in comments
2017-08-11 21:37:29 -04:00
Lennart Spitzner
655074d1c0
Fix comment insertion error introduced in 91b9a240
2017-08-10 13:09:39 +02:00
Lennart Spitzner
91b9a240f1
Fix comment-before-BDCols issue; Relax alignmentBreakOnMultiline
2017-08-07 00:35:09 +02:00
Lennart Spitzner
41beeb9723
Remove/Cleanup unused/deprecated MTEL stuff
2017-08-06 16:28:41 +02:00
Lennart Spitzner
b39997fcfa
Adapt for ghc-8.2
...
Could it be so simple?
2017-08-05 18:17:49 +02:00
Lennart Spitzner
ccb59ef803
Fix wherespecial with indent/=2 ( fixes #39 )
2017-08-05 16:09:46 +02:00
Lennart Spitzner
00ad6c71b9
Impl. layouting of TypeApplication, fixes #38
2017-07-28 18:03:21 +02:00
Alan Zimmerman
33eed86851
Fix haddock generation.
...
Otherwise the haddock process complains about malformed haddock comments
2017-07-07 10:40:55 +02:00
Lennart Spitzner
134f31e4d1
Add Semigroup instances for C*Config Identity
2017-07-05 00:08:21 +02:00
Lennart Spitzner
6268b8075a
Fix layouting bug for RecordUpd
2017-07-04 23:57:54 +02:00
Lennart Spitzner
5a82968a7b
Add sub-config-alternative default to lib interface
...
i.e. `forwardOptionsSyntaxExtsEnabled`
2017-07-04 23:26:13 +02:00
Lennart Spitzner
0251062100
Support mdo layouting (RecursiveDo)
2017-06-29 18:13:28 +02:00
Lennart Spitzner
cece70380c
Fix/Implement proper layouting of MultiWayIf
2017-06-28 23:35:02 +02:00
Lennart Spitzner
6d472315e3
Fix layouting special-case (getSpacing(s) internals)
2017-06-04 18:15:22 +02:00
Lennart Spitzner
5e3cc0a7c3
Fix OpApp layouting/indentation annoyance
2017-06-04 16:28:01 +02:00
Lennart Spitzner
16f5aa118d
Add flag to omit reformatting (ghc-exactprint only)
2017-06-03 21:01:24 +02:00
Lennart Spitzner
9f4cda9130
Add license (AGPLv3)
2017-06-03 18:23:03 +02:00
Lennart Spitzner
91429ccacc
Remove unordered-containers direct dependency
2017-06-03 18:23:03 +02:00
Lennart Spitzner
3784a0123b
Refactor exposed function (now parsePrintModule)
...
- Rename parsePrintModule -> parsePrintModuleTests
- Rename pureModuleTransform -> parsePrintModule
- Change argument type from (CConfig Option) to Config
- Expose CConfig type fully
2017-06-03 18:23:03 +02:00
Lennart Spitzner
dfec26e55b
Refactor/Rename LayoutError -> BrittanyError
2017-06-03 18:23:03 +02:00
Lennart Spitzner
1adf02dabe
Add instance Monoid (CConfig Option)
2017-06-03 18:23:03 +02:00
Lennart Spitzner
f350113f7f
Refactor all modules: +Internal; Add public Brittany module
2017-05-22 21:25:08 +02:00
Lennart Spitzner
5dbe0f2c9c
Add function pureModuleTransform
2017-05-22 21:06:02 +02:00
Lennart Spitzner
fd9427754e
Add "hackAroundIncludes" option (default false)
...
- Makes brittany work in stdin/stdout mode when
CPP usage is limited to #includes.
2017-05-22 15:49:18 +02:00
Lennart Spitzner
3957272c10
Improve backwards-compat for config (manual FromJson)
2017-05-22 15:45:14 +02:00
Lennart Spitzner
8f1e366f9c
Change config file structure; Add config version tag
2017-05-21 16:48:05 +02:00
Lennart Spitzner
4ee44388f7
Improve layouting for OpApp (special-case for dollar/HsVar)
2017-05-21 13:43:39 +02:00
Lennart Spitzner
b8396da1d6
Refactor Backend.hs (Move stuff to top-level)
2017-05-21 13:17:46 +02:00