Skip to content

Slightly better breaking of unary prefix symbols.#2388

Open
jordwalke wants to merge 7 commits into
reasonml:masterfrom
jordwalke:unaryImprovement
Open

Slightly better breaking of unary prefix symbols.#2388
jordwalke wants to merge 7 commits into
reasonml:masterfrom
jordwalke:unaryImprovement

Conversation

@jordwalke

@jordwalke jordwalke commented Apr 17, 2019

Copy link
Copy Markdown
Member

Summary:
Before these would break like:

!!
  myFunction(
    foo,
    bar
  )

But now they break like

!!myFunction(
    foo,
    bar
  )

This is still not ideal, but it's an improvement.

Also, one downside is that now closing parens next to unary ! are not aligned to two character grid, though they are still correctly "lined up" with their function call.

let res =
  !myFunction(
     foo,
     bar
   )

However, I think that is better than what was there previously.

let res =
  !
    myFunction(
      foo,
      bar
    )

Unary minus and friends are also improved.

let res =
  -
    myFunction(
      foo,
      bar
    )

Is now:

let res =
  - myFunction(
       foo,
       bar
     )

Unary minus doesn't have any two character grid problems because there is always a space after them. It's mostly about ! and I'd say this is still an improvement.

To fix the remaining issue seems pretty invasive at the moment.

For a future improvement, I might suggest a pass that prepends unary operators to
function names in certain cases, and then running the printer as if these unary
prefixes didn't even exist (in those cases).

Summary:
Before these would break like:

```
!!
  myFunction(
    foo,
    bar
  )

```
But now they break like

```
!!myFunction(
    foo,
    bar
  )

```

This is still not ideal, but it's an improvement.

Also, one downside is that now broken nots are not aligned to two characters.

```
let res =
  !myFunction(
     foo,
     bar
   )

```

However, I think that is better than what was there previously.

```
let res =
  !
    myFunction(
      foo,
      bar
    )

```

This doesn't come up with unary minus, or even unary operators that are of
character length two. It's mostly about `!`. I'd say this is still an
improvement.

To fix the remaining issue seems pretty invasive at the moment.

For a better fix, I might suggest a pass that prepends unary operators to
function names in certain cases, and then running the printer as if these unary
prefixes didn't even exist (in those cases).

Test Plan:

Reviewers:

CC:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

2 participants