Comments (8)
It's intentional.
Any expression containing |>
is treated as a multiline expression and is broken around |>
for aestheticity.
The last two examples consist of one-liner expressions.
from fantomas.
I would only drop a |> down to the next line if the line was too long, or maybe if there was more than two pipes. Does a reverse pipe get formatted the same?
from fantomas.
@7sharp9 Reverse pipe is treated as one-liner.
Since <|
has relatively low precedence, you will not see their consecutive occurrences often.
from fantomas.
It does look like the line breaking is a bit excessive for some quite common uses of |>. For example:
let ``update length 3``() =
(((len3 |> update 0 "cc"|> lookup 0) = "cc") && ((len3 |> update 1 "bb"|> lookup 1) = "bb")
&& ((len3 |> update 2 "aa"|> lookup 2) = "aa")) |> should equal true
becomes
let ``update length 3``() =
(((len3
|> update 0 "cc"
|> lookup 0) = "cc") && ((len3
|> update 1 "bb"
|> lookup 1) = "bb") && ((len3
|> update 2 "aa"
|> lookup 2) = "aa"))
|> should equal true
and
let len7 = empty |> cons "a" |> cons "b" |> cons "c" |> cons "d" |> cons "e" |> cons "f" |> cons "g"
becomes
let len7 =
empty
|> cons "a"
|> cons "b"
|> cons "c"
|> cons "d"
|> cons "e"
|> cons "f"
|> cons "g"
from fantomas.
These line breakings are indeed excessive.
It would be nice to add a few common patterns to print |>
as inline expressions. What are your suggestions?
from fantomas.
Hello, i have more general issue but with same Title.
Hi,
I would like to have an option to disable line breaking and line removing on code formatting.
In my case I need empty lines for readability purposes and disabling auto formating would
give me more freedom to control the codeset, i.e to control my record, pipe and list style
in my own way.
Thank you in advance!
from fantomas.
I need empty lines for readability purposes
The situation has improved in #434, please create a new issue with additional suggestions if necessary.
from fantomas.
Hello. I also feel that Fantomas adds too many line breaks by default. Thankfully, I'm able to control this with the Max... settings. However, I can't find a way to control the following examples:
Code:
open System open System.IO
Result:
open System
open System.IO
Code:
type JpgDir = string type TifDir = string
Result:
type JpgDir = string
type TifDir = string
Code:
module A = Array;; module L = List;;
Result:
module A = Array
module L = List
Code:
let trace x = printfn "%A" x; x
Result:
let trace x =
printfn "%A" x
x
Code:
let tryParseInt s = try Some (int s) with | :? FormatException -> None
Result:
let tryParseInt s =
try
Some(int s)
with :? FormatException ->
None
Code:
let boolToInt x = match x with | true -> 1 | false -> 0
let boolToInt' = function | true -> 1 | false -> 0
Result:
let boolToInt x =
match x with
| true -> 1
| false -> 0
let boolToInt' =
function
| true -> 1
| false -> 0
Of these examples--most of which I realize are not idiomatic F#!--the last one with the pattern match is my highest priority. If you'd like, I'll be happy to open a new issue just for the pattern match example. Thank you.
from fantomas.
Related Issues (20)
- Invalid F# code after formatting HOT 1
- Formatting removes necessary additional closing brackets for multiline interpolated strings HOT 1
- Fantomas reports an error when formatting interpolated string with tripple quotes HOT 7
- Idempotency problem when _.Property shorthand
- Regression: Stroustrup bracket style in anonymous record type parameter is not respected
- HashDirective before closing `]`
- Long parameter attribute gives weird line break before type annotation
- Fantomas corrupts an explicit constructor with `then` clause HOT 2
- FormatASTAsync loses single quotes for characters HOT 4
- Regression: An empty line or comment at the end of a list breaks Stroustrup formatting HOT 2
- `SpaceBeforeUppercaseInvocation` corrupts underscore lambda invocation HOT 1
- Non needed parentheses are added around lambda call from tuple/members HOT 3
- [Feature request] Make newline experience consistent across match branches HOT 1
- Make Fantomas AOT compatible HOT 12
- cannot determine if Expr AppSingleParenArg Fantomas.Core.SyntaxOak+ExprAppSingleParenArgNode is uppercase or lowercase HOT 1
- cannot determine if Expr AppSingleParenArg Fantomas.Core.SyntaxOak+ExprAppSingleParenArgNode is uppercase or lowercase HOT 2
- [Feature request] Keep `interface end` on a single line HOT 1
- Regression since 6.3.5: Shorthand lambda pushes args far out right with name-sensitive alignment; discrepancy with normal lambda HOT 1
- Stroustrup formatting breaks array containing just empty line or comment HOT 1
- [Feature request] Set custom fantomas path on Fantomas.Client HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fantomas.