Commit Graph

60 Commits (5bf295d082bea7a2855e595d5b3a09a4bf2fc8be)

Author SHA1 Message Date
pepe iborra a79b5e1a4b Add support for Implicit Params
I don't know what I'm doing, but it type checks

Closes #246
2019-07-14 23:31:11 +01:00
Evan Borden 988d5b4353
Add support for OverloadedLabels
`OverloadedLabels` is a simple enough extension to parse and format. It
is becoming more common with use of `generic-lens`. Since it can be
treated as a `HsVar` its implementation only requires using `docLit`,
along with some marshalling for dealing with `FastString`.
2019-06-23 19:31:05 -05:00
Lennart Spitzner 42f566b94a Support QuasiQuotation-splices 2019-06-12 09:17:21 +02:00
Lennart Spitzner 517eda8526 Merge pull request #216 from matt-noonan/master 2019-06-05 22:41:22 +02:00
Lennart Spitzner f9d70cf546 Refactor CPP slightly, Add test-cases 2019-06-05 21:05:27 +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
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 71efa54954 Move tests, minor Refactoring, Add comments 2018-09-23 23:32:05 +02:00
Sergey Vinokurov 9755db1d05
Unify "(#", "#)" under single name, docParenHashL and docParenHashR 2018-09-18 09:14:20 +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
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
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 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 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 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
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 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 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 19e31fdaf2 Improve layouting of RecordUpd, Fix minor issue for HsLet 2018-02-19 21:33:43 +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 43abab2dd2 Remove space after opening parenthesis (fixes #87) 2017-12-28 20:46:03 +01:00
Matthew Piziak b731cd15e7
capture starting layout 2017-12-14 16:17:39 -05: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 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 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 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 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