Lennart Spitzner
ca3c8b6f9e
Add one source doc
2019-06-05 15:56:32 +02:00
Matt Noonan
8551600377
Explicitly handle empty HsCase and HsLamCase.
2019-02-04 22:56:46 -05:00
Matt Noonan
6aa537089d
Disable single-line HsApp with argument comments.
2019-02-04 15:10:55 -05:00
Lennart Spitzner
621e00bf3f
Fix indentation (comments) after "if" ( Fixes #167 )
2018-11-14 14:53:08 +01:00
Rupert Horlick
01e31b4256
Add type fam instance formatting
2018-11-13 17:07:27 -04:00
Lennart Spitzner
34735e27ef
Add compat with GHC-8.6 API
2018-11-04 22:14:00 +01:00
Lennart Spitzner
522e40c8ed
Retain empty lines before "where"
...
only applies to local "where"s (not module..where)
2018-11-04 18:13:37 +01:00
Lennart Spitzner
ad5868eb76
Fix spacing bugs, Clean up implemenation
...
- Normalize spaces on type alias lhs. unnecessary spaces were
retained previously, e.g.
"type ( ( a :%: b ) c ) = (a , c)"
had non-optimal output
- Clean up separator usage
- Remove backend hacks (to some degree)
- Minor reformatting and premature optimization
2018-10-27 16:15:28 +02:00
Rupert Horlick
e7d8b5f1ab
Fix type synonym comments
2018-10-19 15:55:29 -04:00
Rupert Horlick
b249c10054
Deal with parens inside comments on 8.4.3
2018-10-17 17:01:31 -04:00
Rupert Horlick
e1b43531a8
Add type synonym formatting
2018-10-16 19:28:30 -04:00
Lennart Spitzner
38216cdc02
Add longer doc/Refactor stripWhitespace'
2018-10-11 20:14:29 +02:00
Rupert Horlick
66fd44058d
Add instance formatting for simple case
2018-10-10 14:32:58 -04:00
Lennart Spitzner
6dc5561d08
Merge pull request #186 from sergv/unboxed-tuples
...
Unboxed tuples
2018-09-30 21:19:15 +02:00
Lennart Spitzner
71efa54954
Move tests, minor Refactoring, Add comments
2018-09-23 23:32:05 +02:00
Lennart Spitzner
460bd4dd2b
Merge pull request #185 from 5outh/benjamin/file-name-errors
...
Append input path name to UnknownNode errors
2018-09-23 22:29:42 +02:00
Sergey Vinokurov
9755db1d05
Unify "(#", "#)" under single name, docParenHashL and docParenHashR
2018-09-18 09:14:20 +01:00
Sergey Vinokurov
6898d3ef44
Lay out unboxed tuples in types
2018-09-18 09:07:15 +01:00
Sergey Vinokurov
281d7a2f81
Lay out unboxed tuples with spaces
...
This avoids clashes with names like foo#
2018-09-18 09:07:13 +01:00
Lennart Spitzner
37e4225c49
Include exact location when printing ErrorUnknownNode
2018-09-18 00:23:23 +02:00
Evan Rutledge Borden
92a1d89983
Consolidate record expression layouter
...
Both record construction and record layouting have very similar
constructions. These each had their own layouter with slightly different
variations. Variations here lead to subtley different bugs in layout for
nearly identicle syntactic forms.
The record update logic is more advanced and respects `IndentPolicyLeft`.
Instead of keeping these layouters distinct we can consolidate
construction logic into the update logic. This results in a smaller
volume of code and more uniform layouting of syntax for these simlilar
forms.
Record constructors with fields and wildcards are not included in this
consolidation. A TODO has been left to handle this consolidation later.
2018-09-16 15:47:04 -04:00
Phil Hazelden
a5a24b4220
Fix imports of type operators.
...
Previously, we could only import a type operator with no subsequent
list, i.e.
import Foo ( (:.) )
was fine, but
import Foo ( (:.)(..) )
import Foo ( (:.)((:.) )
import Foo ( (:.)(A, b) )
would all break. Brittany would attempt to output them as
import Foo ( :.(..) )
import Foo ( :.((:.) )
import Foo ( :.(A, b) )
I believe the problem was that although `ieName <$> lie` was returning
an `IEWrappedName` with the same contents as used in `layoutWrapped`,
it had different location annotations; and the parentheses are
apparently saved in the location annotations.
2018-08-10 10:01:11 +01:00
Lennart Spitzner
4497fa927f
Add a comment about one superfluous docSetParSpacing
2018-07-06 22:57:33 +02:00
Lennart Spitzner
3c5670d5cd
Fix layouting for OpApps with comments (fixes 159)
2018-07-05 21:31:28 +02:00
Lennart Spitzner
95f42061d2
Fixup for the fix of ExplicitNames/PatternSynonyms for ghc-8.0
2018-07-04 22:42:20 +02:00
Lennart Spitzner
ab389fe66f
Support for -XExplicitNamespaces and -XPatternSynonyms
...
Properly round-trip export items of the forms "type OPERATOR"
or "pattern SYNONYM"
fixes #158
2018-07-04 21:42:46 +02:00
Lennart Spitzner
cc0718e964
Add indentation to import-hiding-paragraph
2018-06-04 18:18:44 +02:00
Lennart Spitzner
5816704658
Fix import-hiding-paragraph with policy/=free ( fixes #150 )
2018-06-04 17:30:50 +02:00
Lennart Spitzner
bdee27cb59
Add spaces around record braces (single-line) ( fixes #126 )
2018-05-25 17:57:54 +02:00
Lennart Spitzner
f75127b3a5
Make non-bottom-spacing affect sameline, too ( fixes #144 )
2018-05-16 21:19:36 +02:00
Lennart Spitzner
4973298f30
Support same-line let decl when indentAmount>=4
2018-05-01 23:21:31 +02:00
Lennart Spitzner
e91bb6aec9
Clean up IndentPolicyMultiple
2018-05-01 23:19:44 +02:00
Bryan Richter
9ab17cc899
Implement IndentPolicyMultiple
2018-05-01 22:07:05 +02:00
Lennart Spitzner
929e465fd4
Refactor a bit (Internal.ppDecl -> Decl.layoutDecl)
2018-04-25 20:17:36 +02:00
Lennart Spitzner
10e1c19788
Add support for ghc-8.4
2018-04-17 17:50:41 +02:00
Lennart Spitzner
213e82b476
Fix if-then-else paragraph layouting
2018-04-17 06:19:13 +02:00
Lennart Spitzner
8b67a028ea
Do not put `where` on newline when no export list
...
(even when lconfig_allowSingleLineExportList False)
2018-04-09 00:09:07 +02:00
Sergey Vinokurov
9bd3bfbe4c
Review suggestions
2018-04-03 22:49:06 +01:00
Sergey Vinokurov
7a60229673
Fix some hlint hints
2018-04-02 22:44:49 +01:00
Sergey Vinokurov
631d9e181d
Replace 'fmap f $' with 'f <$>'
2018-04-02 22:44:49 +01:00
Sergey Vinokurov
545eff9e4f
Remove redundant parens
2018-04-02 22:42:06 +01:00
Sergey Vinokurov
226da07815
Improve vertical alignment
2018-04-02 22:41:15 +01:00
Sergey Vinokurov
0dad5051df
Remove redundant '$'s
2018-04-02 22:41:14 +01:00
Sergey Vinokurov
2ed9a13fdb
Replace 'docAltFilter' with 'runFilteredAlternative'
2018-04-02 21:25:44 +01:00
Lennart Spitzner
b43ee43220
Fix/Implement empty type constraint handling ( fixes #133 )
2018-04-02 17:11:53 +02:00
Lennart Spitzner
0845142727
Fix let-in comment placement bug ( fixes #110 )
2018-03-23 17:34:36 +01:00
Lennart Spitzner
bdd3b155f3
Fix HsPar comment placement bug (see #111 )
2018-03-23 17:11:39 +01:00
Lennart Spitzner
3847325fd5
Omit single-line layout for OpApp with comments ( fixes #111 )
2018-03-23 17:02:58 +01:00
Lennart Spitzner
a003b932a9
Fix comments in tuples being dropped ( fixes #37 )
2018-03-23 16:55:28 +01:00
Lennart Spitzner
d634d34ff1
Fix module-import-hiding-items layout
2018-03-23 15:41:41 +01:00
Lennart Spitzner
90a2f65ba7
Align applications on for same function, plus minor fixup
...
Arguments of two function applications will only be aligned
if the same function is called in both cases.
The column transform was altered slightly to fix #65
properly as well.
fixes #65 , #128
2018-03-22 01:19:56 +01:00
Lennart Spitzner
f1536b8966
Merge pull request #83/#124 from sniperrifle2004/import
2018-03-21 01:06:26 +01:00
Lennart Spitzner
8de56ba11d
Support import column vs import-as column
2018-03-21 01:02:44 +01:00
Lennart Spitzner
1330aeb6b4
Fix ticked type operator losing tick ( fixes #125 )
2018-03-13 23:51:22 +01:00
Lennart Spitzner
833ac95fd7
Add two config options to control preamble layouting
2018-03-12 17:11:25 +01:00
Lennart Spitzner
9531edb2a7
Improve module layouting in two aspects
...
- IEThingWith in export list can now be single-line
- Now respect offset of the "module" keyword
(retain empty lines after pragmas, for example)
2018-03-12 16:29:47 +01:00
Lennart Spitzner
20f9c009ee
Stop hanging indent for IEThingWith
...
plus minor refactors/cleanups
this is more in line with IndentPolicyLeft and imo also looks
nicer in general
2018-03-11 22:49:20 +01:00
Lennart Spitzner
41a60ce60f
Merge branch 'master' into import
2018-03-11 17:43:16 +01:00
Lennart Spitzner
19e31fdaf2
Improve layouting of RecordUpd, Fix minor issue for HsLet
2018-02-19 21:33:43 +01:00
Lennart Spitzner
c124336738
Fix NOINLINE pragma layouting
2018-02-19 17:17:39 +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
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
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
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
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
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