Lennart Spitzner
7d84705e7a
Fix let-in-expr non-idempotent comment placement
2023-08-31 11:59:35 +00:00
Lennart Spitzner
28e3ec18a3
Implement new config flag UnknownOperatorHandling
2023-08-31 13:59:29 +02:00
Lennart Spitzner
d5f1deaa3d
Stop duplicating commas for splices inside list
2023-06-26 15:53:26 +00:00
Lennart Spitzner
b6da307ecc
Stop using single-line layout for records defs with comms
2023-06-26 15:53:26 +00:00
Lennart Spitzner
9737cb3adc
Allow case-of Blockargument operand with par-spacing
2023-06-21 13:04:34 +00:00
Lennart Spitzner
9d14407191
Fix interaction of do-block with ExprWithTySig
2023-06-21 09:26:36 +00:00
Lennart Spitzner
628ab81bc9
Set proper indentation base level for operands
2023-06-20 17:06:50 +00:00
Lennart Spitzner
a6e187e962
Fix multiline-list indentation past comma level
2023-06-20 17:06:50 +00:00
Lennart Spitzner
278e0275f2
Allow parspacing for lambdacase after operator
2023-06-20 17:06:50 +00:00
Lennart Spitzner
4ed3a2f53d
Fix a missing comment case with MultiWayIf
2023-05-29 21:00:10 +00:00
Lennart Spitzner
03e578f72c
Refactor file/module structure again again
2023-05-29 20:44:01 +00:00
Lennart Spitzner
54043ca9ba
Fix empty do-block error call
2023-05-29 20:44:01 +00:00
Lennart Spitzner
10dc48b74d
Do not retain newlines when refactoring list into single line
2023-05-29 20:44:01 +00:00
Lennart Spitzner
5481e5015f
Make use of OpTree for type (signature) layouting, Fix layout
...
Some more cases that still produced broken layout on interaction
with do-blocks were fixed.
2023-05-29 20:44:01 +00:00
Lennart Spitzner
a5f2178d87
Fix missing comments in record decl
2023-05-28 13:55:21 +00:00
Lennart Spitzner
8f69d5e816
Fix bad indentation problem for HsMultiIf inside parens
2023-05-28 13:55:21 +00:00
Lennart Spitzner
6721a44359
Retain comments after lambdacase and at record fields
2023-05-28 13:55:21 +00:00
Lennart Spitzner
adc74d8bb1
Fix paren-multiline-expression in do block
2023-05-28 13:55:21 +00:00
Lennart Spitzner
a9091daeb9
Improve layout options for newtype-decls
...
Also re-introduce the config flag to enable/disable
single-line newtype rhs layouting.
2023-05-18 15:42:48 +00:00
Lennart Spitzner
9c5a490938
Fix comment duplication on Matches
2023-05-18 15:42:48 +00:00
Lennart Spitzner
6008cb26ac
Support basic form of HsBangTy
2023-05-18 15:42:48 +00:00
Lennart Spitzner
7e56701bc2
Support associated data decls with multiple constructors
2023-05-18 15:42:48 +00:00
Lennart Spitzner
7bf2879ac0
Deny one layout for OpApp cases unless precedence<=1
...
Previously allowed: `foo = abc + def-as-par`
Still allowed: `foo = abc $ def-as-par`
Still allowed: `foo = abc <&> \x -> def-as-par`
2023-05-08 15:15:14 +00:00
Lennart Spitzner
e7cdff440d
Fix space between paren and multi-line lambda
2023-05-08 15:15:14 +00:00
Lennart Spitzner
91300f5316
Respect empty lines after let keyword
2023-05-08 14:54:34 +00:00
Lennart Spitzner
687b59c62f
Respect newlines before "where"
2023-05-08 14:54:34 +00:00
Lennart Spitzner
2b77142617
Fix layout of type-level list literal
2023-05-03 19:53:19 +00:00
Lennart Spitzner
884c7da97c
Allow special layout for HsApp with HsDo/HsSpiceE args
2023-05-02 09:56:39 +00:00
Lennart Spitzner
ab67a794db
Fix retaining newlines between do statements
2023-05-02 09:56:39 +00:00
Phil Hazelden
52bde7910f
Support promoted type applications.
...
Closes #370 .
Up to GHC 8.10,
foo @ 'Bar
was a valid type application. In GHC 9 it's not, which means brittany
needs to allow
foo @'Bar
which it now does.
The reason the space was needed was to allow a promoted type variable at
the head of a type-level list. That is,
'['Foo]
is invalid syntax, because it initially parses as the character `'['`.
So the promoted type variable was always given a separator at the
beginning, and we'd get
'[ 'Foo]
which was valid. Now we handle this case by specifically examining the
head of a type-level list; if it's promoted we introduce spaces, so
'[ 'Foo ]
'[Foo]
I've added tests for this and some related cases. In doing so I noticed
that unnecessary spaces get added in front of commas in these lists; I
believe that's a separate bug, and I've written a comment explaining why
it happens, but I haven't tried to fix it.
I'm not sure when the first alternates in the `FirstLastSingleton`
and `FirstLast` branches would ever be hit, so I'm not entirely sure if
the separators are necessary there. But since `docSeparator` disappears
at the end of a line and merges with adjacent separators, they should be
harmless.
2023-05-02 09:56:39 +00:00
Lennart Spitzner
7ab6a207ae
Update OpApp layouting options
...
- Allow par-spacing for single-operator 1+n-line layout
- Tweak when to flatten operators, i.e. when to allow a flat one-line-each
layout for the operator sequence "$ $ $ + +".
2023-05-02 09:16:44 +00:00
Lennart Spitzner
99e5aacb5e
Discard special case for non-nested OpApp
2023-05-02 09:16:04 +00:00
Lennart Spitzner
52e4658314
Minor comment updates and cleanup
2023-05-02 09:16:04 +00:00
Lennart Spitzner
56e7d6b5b9
Simplify/Optimize Decl:layoutPatternBindFinal
2023-05-02 09:16:04 +00:00
Lennart Spitzner
156b5cf407
setParSpacing for operator-expression ending in par
2023-05-02 09:16:04 +00:00
Lennart Spitzner
d29303d4cd
Improve one HsLet layout
...
- Allow parSpacing for single-clause layout
- Allow par/sl layout when no where-clause was present
(not sure why this was disabled in the first place)
2023-05-02 09:16:04 +00:00
Lennart Spitzner
5563cd4d93
Dont flatten operators without surrounding parens
2023-05-02 09:16:04 +00:00
Lennart Spitzner
09ec59eaf9
Fix comment-after-context
2023-05-02 09:16:04 +00:00
Lennart Spitzner
2fef44559e
Fix comments moving after "where"
2023-05-02 09:16:04 +00:00
Lennart Spitzner
ebe85a5949
Use dependency-injection for ToBriDoc modules
...
I assume this makes inlining impossible, but it enables
parallel compilation of all these modules. In my tests
this reduce wall clock time to 92%, and with more cores
the benefit should be higher.
2023-05-02 09:16:04 +00:00
Lennart Spitzner
736c2a8d46
Fix retain comments on matches (lambda rhs etc.)
2023-05-02 09:16:04 +00:00
Lennart Spitzner
676695a609
Implement fixity-aware-ops feature
2023-05-02 09:16:03 +00:00
Lennart Spitzner
75d17b961c
Fix double-printing of comments on certain data-decls
2023-05-02 09:16:03 +00:00
Lennart Spitzner
f13a82964a
Partially restore retaining-empty-lines behaviour
...
Currently works for do blocks, multi-line list literals, and
lambda-case cases (apart from top-level blank lines that
never got ignored).
2023-05-02 09:16:03 +00:00
Lennart Spitzner
7c329d391b
Make if-then-layout layout more consistent
2023-05-02 09:16:03 +00:00
Lennart Spitzner
5bee3fa93d
Fix missing comment for MG
2023-05-02 09:16:03 +00:00
Lennart Spitzner
83b13d61a0
Change behaviour: Less par-spacing for function application
2023-05-02 09:16:03 +00:00
Lennart Spitzner
3121ccacfe
Behaviour addition: Allow par-spacing on HsApp
2023-05-02 09:16:03 +00:00
Lennart Spitzner
d9373ec80e
Implement extension support - OverloadedRecordDot
2023-05-02 09:16:03 +00:00
Lennart Spitzner
72c9e4c3ab
Fix block-comment delta position special case
2023-05-02 09:16:03 +00:00